我有这段代码来找到两组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