结果应该为零!
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?
答案 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开发者控制台)中的另一个示例:
答案 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]));