将一个值与一个应该相同的差异进行比较不是

Comparing a value with a difference that should be same is not

我在 Windows 7 上使用 Excel 2013。

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

1.24 = 66.64 - 65.4

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

=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

令我惊讶的是 return 结果是正确的。

这是一个错误吗?如果是,是否有任何解决方法可以用于类似的检查?

有点像错误 - 我怀疑是由于精度有限,而这又是表示浮点数的结果。 ROUND 这是强制进行一些近似的方法,比如:

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

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