Ich habe diesen Code, um den Abstand zwischen zwei Gruppen von GPS-Koordinaten zu finden, habe ich den Code von anderswo im Netz.Breite/Länge Vektor zu Entfernung, seltsames Problem mit der Ausgabe
function distance($lat1, $lon1, $lat2, $lon2, $unit) {
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
if ($unit == "K") {
return ($miles * 1.609344);
} else if ($unit == "N") {
return ($miles * 0.8684);
} else {
return $miles;
}
}
Der Ausgang zurück sieht wie folgt aus: 25,44049 aber wenn ich
tun$distance_output = distance(-50.12345, 100.1235,-60.12345,120.12345,'km');
echo $distance_output . '<br />;
echo $distance_output - 15.12345;
gibt sie wie folgt aus:
15.12345
1.23639038e10
Diese sind nur Zahlen aus, aber man kann das sehen Die Ausgabe von distance() sieht wie eine Zahl aus, aber wenn ich dieselbe Zahl von ihr subtrahiere, spuckt sie eine seltsame Exponentialzahl aus. Irgendwelche Ideen?
Vielen Dank
Ich vermute, dass der zweite:
Wenn Sie das Ergebnis angezeigt werden soll, verwenden Sie number_format()
Wenn Sie zwei Gleitkomma-Werte vergleichen wollen, müssen Sie den Einsatz so etwas zu tun haben, Nummer hat das Format "e-10" (beachten Sie das Minuszeichen), was ein sehr kleiner Wert ist. Wenn ja, dann hat das, was Sie sehen, nichts mit der Entfernungsberechnung und allem zu tun, was mit dem Umgang von Computern mit Fließkommazahlen zu tun hat. – Anon
Und in Zukunft kopieren Sie bitte die genaue Ausgabe von Ihren Skripten in die Fragen. "Made-up" -Nummern führen zu erfundenen Antworten, die Ihre eigentliche Frage beantworten können oder auch nicht. – Anon