Excel sumif返回大数字而不是零

时间:2018-12-20 09:21:16

标签: excel

我有一列正负数,总和应平衡为零(这是一个会计工作表)。

但是,如果我使用SUMIF公式而不是0,则会得到: 1.81899E-12或-9.09495E-13或类似版本。 (我不知道这种结果叫什么,但我认为它们代表很大或很小的数字)

我创建了一个显示问题的样本文档。

如果将单元格设置为数字格式,则返回零;如果将单元格设置为常规格式,则返回上述结果。

我经常还会发现,即使简单的SUM函数也返回类似的结果,就像excel底部状态栏中的SUM一样,因此,这不仅仅是我在努力的SUMIF函数。但是,我无法在示例电子表格中使用SUM函数重新创建问题。

我将Excel用作Home and Business 2013的一部分。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

正如@Dominique所指出的,xxxE-12是一个非常非常小的数字。非常非常接近零。

xxxE-12是Excel(和大多数编程语言)写xxx * 10^-12的方式。

您猜到,这是由于四舍五入。但是,它也显示了计算机如何处理浮点(十进制)数字的问题。您认为1/3 = 0.333可能在内部表示为0.333333681之类的东西。请参阅https://en.wikipedia.org/wiki/Floating-point_arithmetic,尤其是https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems

第二,如果单元格的格式设置为“常规”而不是“数字”,为什么会出现这种情况?使用“数字”时,您期望整数部分,最多3个小数。 x.xxE-12在小数点后十二位(!)处具有最大的非零分量。因此,在显示时,它会四舍五入到一个很好的零。但是,“常规”试图将数字显示为接近实际值,在这种情况下为xxxE-12

还请注意,如果您尝试将计算值与零进行比较,这可能会给您带来麻烦。说=IF(SUMIF(...) = 0, ...;即使您认为正确,它也可能不会评估为TRUE(由于值很小)。解决方法是将计算值之差与零进行比较:=IF(ABS(SUMIF(...) - 0) < 1E-9, ...