浮点值比较错误

时间:2015-06-17 02:32:34

标签: php

$x = array(
    "0",
    "1689.60",
    "0.00",
    "-200",
    "432.00",
    "33.60"
);

$v = 0;

foreach($x as $p) {
    $v += $p;
}

if($v == 1955.2) {
    echo 'equal';
}

用这个简单的脚本我假设它将输出"相等"但它没有。

如果我将-200的值更改为-100并将预期结果值更改为2055.2,则可以正常工作。我已经通过将$ v类型转换为字符串来解决我的问题,但我只是想知道为什么它不起作用,如果它是一个数字(整数或浮点)类型。

1 个答案:

答案 0 :(得分:1)

http://php.net/manual/en/language.types.float.php

这里的问题是你的浮动值,即使它们看起来非常相等,也不是由于PHP(和计算机本身)如何表示浮点整数。在测试浮点数的源代码的评论中有一些解决方案。我强烈建议您查看该来源;这是简短而有益的。