我有一个关联数组,其值为浮点数,它们应该是概率.因此,我总结它们并要求结果实际上是1.
$total = array_sum($array);
echo '$total = '.$total."\n";
if ($total == 1) {
die("total is 1");
} else {
die("total is not 1");
}
这神秘地输出:
$total = 1
total is not 1
执行var_dump($total)会产生float(1),但是甚至$total ==(float)1都会返回false.
这是怎么回事?
解决方法:
PHP(和其他语言)中的浮点数不精确,因此(float)1实际上可能是1.00000000000000123113或.99999999999999823477
有关更多信息,请参阅答案PHP – Floating Number Precision