0

结果应该为零!

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?

4

3 回答 3

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]));
于 2019-03-04T12:02:36.693 回答
0

因为浮点值(当你使用小数时你在这里有)不准确。它们是近似值

-7.105427357601E-15对这些值求和时会出现该近似值的错误。

于 2019-03-04T11:59:09.990 回答
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(谷歌开发者控制台)的例子:

在此处输入图像描述

于 2019-03-04T11:59:38.900 回答