我在 Excel 2010 中输入了一些数字,然后注意到似乎存在浮点问题。我计算了四个数字的总和,期望结果为零,结果得到了非常很小的一个数,接近于零。我想,“好吧,浮点数问题,当然可以。”但后来我注意到,如果你以不同的顺序将它们相加,结果的总和是零。
为什么以不同的顺序添加它们会影响 Excel?我没想到这一点。是的,我意识到 1.13E-13 非常小,而且非常接近于零。我想知道为什么根据加法顺序计算会有差异。
原始数据如下:
573.7
-144.79
-309.84
-119.07
1.136868E-13 =sum(A1:A4)
0.000000E+00 =A1+A2+A3+A4
1.13687E-13 =A4+A3+A2+A1
答案1
如果你使用评估公式在 Excel 中,您可以看到中间结果中 a+b+c+d 是从左到右解析的。因此,a+b+c+d 实际上是计算为 ((a+b)+c)+d。
换句话说,首先计算 a+b 的结果(并以 IEEE754 格式存储),然后将 c 添加到该结果中,等等。
这也解释了为什么结果不同,因为(考虑到中间结果的不准确性),((a+b)+c)+d 不等于 a+(b+(c+d))。