不知何故1不等于1(PHP)

Mal*_*ala 5 php equality

我有一个关联数组,其值为浮点数,它们应该是概率.因此,我总结它们并要求结果实际上是1.

$total = array_sum($array);
echo '$total = '.$total."\n";
if ($total == 1) {
    die("total is 1");
} else {
    die("total is not 1");
}
Run Code Online (Sandbox Code Playgroud)

这神秘地输出:

$total = 1
total is not 1
Run Code Online (Sandbox Code Playgroud)

var_dump($total)收益率float(1),甚至$total == (float)1返回错误.

这是怎么回事?

Jor*_*dan 2

php(和其他语言)中的浮点数并不精确,因此(float)1实际上可能是1.00000000000000123113.99999999999999823477

有关更多信息,请参阅答案PHP - 浮点数精度