为什么NaN从欧几里德方法返回

Als*_*ket 1 php euclidean-distance

我有这个功能的问题:

function encludean_method($lat1,$lon1,$lat2,$lon2)
{
    $x1 = $lat1;
    $y1 = $lon1;
    $x2 = $lat2;
    $y2 = $lon2;
    $x = ( pow($x2,2) - pow($x1,2));
    $y = ( pow($y2,2) - pow($y1,2));
    $distance = (sqrt($x + $y));
    return $distance;
}
Run Code Online (Sandbox Code Playgroud)

当我用一些值调用上面的函数时的问题

(1.57454123333,103.6200516333,1.57483825,103.619484475)
Run Code Online (Sandbox Code Playgroud)

它返回NaN.任何人都可以告诉我为什么NaN返回以及如何解决它?

mis*_*ner 7

$ x和$ y可以假设负值(实际上确实发生在你的例子中),总共产生$ x + $ y的负表达式.我不确定你所做的是否正确,不正确的版本更像是:

$x1 = $lat1;
$y1 = $lon1;
$x2 = $lat2;
$y2 = $lon2;
$x = $x2 - $x1;
$y = $y2 - $y1;
$distance = (sqrt(pow($x, 2) + pow($y, 2)));
return $distance;
Run Code Online (Sandbox Code Playgroud)

通过在计算平方根之前进行平方,您可以保证仅对正值进行操作.