J'ai ce code pour trouver la distance entre deux ensembles de coordonnées GPS, j'ai obtenu le code d'ailleurs sur le net.Latitude/longitude vecteur à la distance, étrange problème avec la sortie
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;
}
}
Le ouput retourné ressemble à ceci: 25,44049 mais si je
$distance_output = distance(-50.12345, 100.1235,-60.12345,120.12345,'km');
echo $distance_output . '<br />;
echo $distance_output - 15.12345;
il délivre en sortie comme ceci:
15.12345
1.23639038e10
Ceux-ci sont tout simplement composées de chiffres, mais vous pouvez voir la La sortie de distance() ressemble à un nombre, mais quand j'en soustrais le même nombre, elle crache un nombre exponentiel wierd. Des idées?
Merci beaucoup
Je soupçonne que la deuxième nombre a le format 'e-10' (notez le signe moins), qui est une très petite valeur. Si oui, alors ce que vous voyez n'a rien à voir avec le calcul de la distance, et tout à voir avec la façon dont les ordinateurs traitent les nombres à virgule flottante. – Anon
Et à l'avenir, s'il vous plaît copiez la sortie exacte de vos scripts dans les questions. Les numéros «composés» mènent à des réponses inventées qui peuvent ou non répondre à votre question. – Anon