$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类型转换为字符串来解决我的问题,但我只是想知道为什么它不起作用,如果它是一个数字(整数或浮点)类型。
答案 0 :(得分:1)
http://php.net/manual/en/language.types.float.php
这里的问题是你的浮动值,即使它们看起来非常相等,也不是由于PHP(和计算机本身)如何表示浮点整数。在测试浮点数的源代码的评论中有一些解决方案。我强烈建议您查看该来源;这是简短而有益的。