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