将值与应该相同的差值进行比较则不是

时间:2015-10-01 11:08:31

标签: excel excel-formula rounding precision excel-2013

我在Windows 7上使用Excel 2013。

我使用基本IF和一些运算符进行了一些Excel数据检查。我遇到了一个问题,导致结果不一致。我检查的是:

1.24 = 66.64 - 65.4

下面是我使用的公式,结果应该是数学上的EQUAL,但它给了我不等于:

=IF(1.24 = 66.64 - 65.4, "EQUAL", "NOT EQUAL")     ;Result: NOT EQUAL

我尝试将数据略微修改为:

=IF(1.24 = 56.64 - 55.4, "EQUAL", "NOT EQUAL")     ;Result: EQUAL

我很惊讶它会返回正确的结果。

这是一个错误,如果是这样,我可以使用任何解决方法进行类似的检查吗?

2 个答案:

答案 0 :(得分:2)

一个错误的排序 - 我怀疑由于精度有限,反过来又是表示浮点数的结果。这种方式ROUND强迫一些近似,比如说:

=IF(ROUND(1.24,2) = ROUND(56.64 - 55.4,2), "EQUAL", "NOT EQUAL")

答案 1 :(得分:1)

每个数字组合都不会发生Excel 15 digit precision floating point errors;仅当小数由于有限的小数位数而向上或向下舍入时。时间值因这些错误而臭名昭着。

因此,您的第一组数字(1.24 = 66.64 - 65.4)会在某个时刻以数字方式舍入,从而产生浮点错误。第二组数字(1.24 = 56.64 - 55.4)愉快地没有表现出这种行为。

15 digit precision error

您可以在前面的图像中看到,您将足够的小数点展开浮点错误变得明显。

更多信息Floating-point arithmetic may give inaccurate results in Excel