array_sum PHP错误结果

时间:2019-03-04 11:56:43

标签: php array-sum

结果应该为零!

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?

3 个答案:

答案 0 :(得分:0)

因为浮点值(使用小数时在此处具有)是不精确的。 They're approximations

将这些值相加时,近似值会出现{{1}}。

答案 1 :(得分:0)

是因为有浮子。如果要计算精度为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开发者控制台)中的另一个示例:

enter image description here

答案 2 :(得分:0)

只需尝试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]));