使用SUM时不同的结果?

时间:2017-02-27 16:55:21

标签: excel

有没有人知道为什么Excel在使用SUM函数时会对同一个问题给出不同的答案?

如果您输入:

=0.1+0.1+0.1-0.3 

与[{1}}相比,您获得了不同的(正确的)响应:

0

这给出了=SUM(0.1+0.1+0.1-0.3) 的错误答案。

据我所知,Excel使用的是IEEE 754,这解释了为什么第二个关闭了,但我想知道的是两者有何不同,以及第一个如何才能使其正确?

1 个答案:

答案 0 :(得分:3)

这取自Microsoft's page解释浮点运算:

  

值达到零时的示例

     

在Excel 95或更早版本中,在新工作簿中输入以下内容:

A1: =1.333+1.225-1.333-1.225 
     

右键单击单元格A1,然后单击“设置单元格格式”。在“数字”选项卡上,   单击类别下的科学。将十进制位置设置为15.相反   显示0,Excel 95显示-2.22044604925031E-16。

     然而,

Excel 97引入了一种尝试纠正的优化   对于这个问题。应该进行加法或减法运算   在值为或非常接近零,Excel 97及更高版本将   补偿由于转换而引入的任何错误   二进制的操作数。在Excel中执行上面的示例   97及更高版本正确显示0或0.000000000000000E + 00 in   科学记数法。

如果计算中包含括号,似乎不应用最后一段中提到的优化 - 可能会破坏计算顺序。例如:

=0.1+0.1+0.1-0.3 = 0

然而:

=(0.1+0.1+0.1-0.3) = 5.551115123125780E-17

然而,错误估计不仅适用于括号中的数字,也适用于外部的数字,前提是公式中有括号。所以:

=0.1+0.1+0.1-0.3+(0.1+0.1+0.1-0.3) = 1.110223024625160E-16

尽管第一部分没有括号,但这个计算在计算中给出了两倍的错误。