为什么这个PHP函数返回错误的结果?

时间:2011-08-05 00:24:55

标签: php

我写了一个用户函数来返回x,y坐标系上两点之间的距离。输入参数为0,0,10,10

以下是原始代码:

public static function dist2d($x1,$y1,$x2,$y2) {
   return sqrt((($x2 - $x1) * ($x2 - $x1)) + (($y2 - $y1) * ($y2 - $y1)));
}

这将返回110。

以下是有效的代码:

public static function dist2d($x1,$y1,$x2,$y2) {
    $result = (($x2 - $x1) * ($x2 - $x1)) + (($y2 - $y1) * ($y2 - $y1));
    return sqrt($result);
}

返回14.1

我是PHP的新手,这里发生了什么?

4 个答案:

答案 0 :(得分:6)

这两个函数都返回14.142135623731。

答案 1 :(得分:2)

你确定吗?这很奇怪,因为这两个函数完全相同。

我在我的环境中尝试了这两种方法(使用你问题中的剪切和粘贴),并且都返回14.142135623731。

答案 2 :(得分:1)

对于特定版本的PHP,它一定是奇怪的,因为我的工作正常(5.3.3)。

答案 3 :(得分:1)

您可能犯了某种错字 - 两种版本都能正常使用(请参阅http://codepad.org/1gFCTPfU作为证据)。

另外,如果您没有描述某个类的静态方法,则应将public static function dist2d(替换为function dist2d(,否则您将得到解析错误,如下所示:http://codepad.org/GkMfFqlo