我有這段代碼來找到兩組GPS座標之間的距離,我從網上的其他地方得到了代碼。緯度/經度向量距離,輸出奇怪的問題
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;
}
}
的輸出中返回看起來是這樣的:25.44049但如果我不
$distance_output = distance(-50.12345, 100.1235,-60.12345,120.12345,'km');
echo $distance_output . '<br />;
echo $distance_output - 15.12345;
它輸出這樣的:
15.12345
1.23639038e10
這些都是編造的數字,但可以看到距離()的輸出看起來像一個數字,但是當我從它減去相同的數字時,它會吐出一個奇怪的指數數字。有任何想法嗎?
非常感謝
我懷疑是第二數字格式爲「e-10」(注意減號),這是一個非常小的值。如果是的話,那麼你所看到的與距離計算無關,以及與計算機如何處理浮點數有關的一切。 – Anon 2010-12-10 21:29:42
未來,請將腳本的確切輸出複製到問題中。 「編造」數字導致回答可能會或可能不會回答您的實際問題。 – Anon 2010-12-10 21:30:23