我在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
我很惊讶它会返回正确的结果。
这是一个错误,如果是这样,我可以使用任何解决方法进行类似的检查吗?
答案 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
)愉快地没有表现出这种行为。
您可以在前面的图像中看到,您将足够的小数点展开浮点错误变得明显。
更多信息Floating-point arithmetic may give inaccurate results in Excel。