Excel 使用SUM和not时的不同结果?
有人知道为什么Excel在使用和函数时对同一个问题给出不同的答案吗 如果您键入:Excel 使用SUM和not时的不同结果?,excel,Excel,有人知道为什么Excel在使用和函数时对同一个问题给出不同的答案吗 如果您键入: =0.1+0.1+0.1-0.3 您得到的0响应与以下响应不同(正确): =SUM(0.1+0.1+0.1-0.3) 这给出了不正确的答案5.55112E-17 我知道Excel使用IEEE 754,这就解释了为什么第二个是关闭的,但我想知道的是这两个有什么不同,第一个是如何做到正确的?这是从解释浮点运算中得出的: 值为零时的示例 在Excel 95或更早版本中,在新工作簿中输入以下内容: A1: =1.3
=0.1+0.1+0.1-0.3
您得到的0
响应与以下响应不同(正确):
=SUM(0.1+0.1+0.1-0.3)
这给出了不正确的答案5.55112E-17
我知道Excel使用IEEE 754,这就解释了为什么第二个是关闭的,但我想知道的是这两个有什么不同,第一个是如何做到正确的?这是从解释浮点运算中得出的:
值为零时的示例 在Excel 95或更早版本中,在新工作簿中输入以下内容:
A1: =1.333+1.225-1.333-1.225
在单元格A1上单击鼠标右键,然后单击“设置单元格格式”。在数字选项卡上,
单击“类别”下的“科学”。将小数点设置为15位。相反
在显示0时,Excel 95显示-2.22044604925031E-16
然而,Excel97引入了一种试图纠正错误的优化
对于这个问题。应该是加法还是减法运算的结果
如果值等于或非常接近零,Excel 97及更高版本将
补偿由于转换数据而引入的任何错误
与二进制之间的操作数。在Excel中执行上述示例时
97及更高版本正确显示0或0.000000000000000 E+00英寸
科学符号
如果计算中包含括号,则上一段中提到的优化似乎不适用-可能会中断计算顺序。例如:
=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
尽管第一部分没有用括号括起来,但此计算的误差是其计算误差的两倍。这是从解释浮点运算中得出的:
值为零时的示例 在Excel 95或更早版本中,在新工作簿中输入以下内容:
A1: =1.333+1.225-1.333-1.225
在单元格A1上单击鼠标右键,然后单击“设置单元格格式”。在数字选项卡上,
单击“类别”下的“科学”。将小数点设置为15位。相反
在显示0时,Excel 95显示-2.22044604925031E-16
然而,Excel97引入了一种试图纠正错误的优化
对于这个问题。应该是加法还是减法运算的结果
如果值等于或非常接近零,Excel 97及更高版本将
补偿由于转换数据而引入的任何错误
与二进制之间的操作数。在Excel中执行上述示例时
97及更高版本正确显示0或0.000000000000000 E+00英寸
科学符号
如果计算中包含括号,则上一段中提到的优化似乎不适用-可能会中断计算顺序。例如:
=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
尽管第一部分没有用括号括起来,但这个计算给出的误差是它的两倍。你的第一个公式使用了
-3
,而你的和公式包含-0.3
…我相信他在第一个公式中也是指-0.3
,一个等于0,另一个等于5.55112E-17
。我已经编辑了这个问题。现在它实际上非常有趣,我的滑稽回答不再有效。似乎与参数也一样=SUM(0.1+0.1+0.1-0.3)=SUM(0.1,0.1,0.1,-0.3)
@Jeeped:我们知道这一点。我现在不得不悲伤地离开,但答案与Excel在计算周期中对常量表达式求值的位置有关。你的第一个公式使用-3
,而你的求和
公式包含-0.3
…测试出来,我相信他在第一个公式中也是指-0.3
,一个等于0,另一个等于5.55112E-17
。我已经编辑了这个问题。现在它实际上非常有趣,我的滑稽回答不再有效。似乎与参数也一样=SUM(0.1+0.1+0.1-0.3)=SUM(0.1,0.1,0.1,-0.3)
@Jeeped:我们知道这一点。我现在不得不悲伤地离开,但答案是关于一个常量表达式在其计算周期中由Excel计算的位置。要添加到测试用例中,=(0.5-0.4-0.1)
和=1-1+(0.5-0.4-0.1)
关闭,但=0.5-0.4-0.1
和=(0.5-0.4-0.1)+1
关闭correct@Jordan谢谢你的回复。我已把它标记为正确的。简言之,我将错误归因于求和函数,而事实上这是由于使用了括号。这是Excel中奇怪的东西。看起来需要进一步优化。要添加到测试用例中,=(0.5-0.4-0.1)
和=1-1+(0.5-0.4-0.1)
关闭,但=0.5-0.4-0.1
和=(0.5-0.4-0.1)+1
关闭correct@Jordan谢谢你的回复。我已把它标记为正确的。简言之,我将错误归因于求和函数,而事实上这是由于使用了括号。这是Excel中奇怪的东西。看起来需要进一步优化。