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]));
这个结果应该是零!
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]));