我有一列正负数,总和应平衡为零(这是一个会计工作表)。
但是,如果我使用SUMIF公式而不是0,则会得到: 1.81899E-12或-9.09495E-13或类似版本。 (我不知道这种结果叫什么,但我认为它们代表很大或很小的数字)
我创建了一个显示问题的样本文档。
如果将单元格设置为数字格式,则返回零;如果将单元格设置为常规格式,则返回上述结果。
我经常还会发现,即使简单的SUM函数也返回类似的结果,就像excel底部状态栏中的SUM一样,因此,这不仅仅是我在努力的SUMIF函数。但是,我无法在示例电子表格中使用SUM函数重新创建问题。
我将Excel用作Home and Business 2013的一部分。
感谢您的帮助。
答案 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, ...
。