array_sum PHP 错误结果

array_sum PHP wrong result

这个结果应该是零!

echo array_sum([-61.50,50.00,10.50,1.00,0.00,50.00,-16.73,-20.00,-55.75,42.48]);

为什么给出 -7.105427357601E-15?

因为浮点值(当您使用小数时这里有)不精确。 They're approximations.

在对这些值求和时,该近似值的误差为 -7.105427357601E-15

是因为花车。如果你想计算精度为 2 的东西(对于这个例子)你应该使用这样的东西:

$el = [-61.50,50.00,10.50,1.00,0.00,50.00,-16.73,-20.00,-55.75,42.48];
$sum = 0;
foreach ($el as $e) {
    $sum += $e * 100;
}

echo $sum / 100;

你永远不应该相信浮动值。来自 Javascript(Google 开发者控制台)的另一个示例:

试试round(),你会得到同样的结果。

echo round(array_sum([-61.50,50.00,10.50,1.00,0.00,50.00,-16.73,-20.00,-55.75,42.48]));