将一个值与一个应该相同的差异进行比较不是
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。
我在 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。