为什么Excel中的if条件为false?

d7v8vwbk  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(242)

我在这些单元格中有这些值:

  • I7:100000
  • I8:-99500.34
  • I9:-103
  • I22:=ROUND(SUM(I7:I21);2)
  • J5:396.66
  • K22:=IF(J5=I22;"OK";"NO")

所有单元格的格式均为数字,保留两位小数。
在这种情况下,K22单元格显示OK,这是正确的,因为比较的单元格具有相同的值。
但是,如果在单元格I22中我没有使用ROUND,那么它就不起作用:

  • I22:=SUMA(I7:I21)

在这种情况下,K22显示“否”。
为什么结果是“否”?
我已经意识到,如果我不使用ROUND,而是在单元格中使用其他值,它就可以工作。
这个案子成功了

  • I7:100000
  • I8:10
  • I9:10
  • I22:=SUM(I7:I21)
  • J5:100020
  • K22:=IF(J5=I22;"OK";"NO")

为什么它在失败的情况下不起作用?
谢谢

4sup72z8

4sup72z81#

在两种情况下比较J5和I22时出现不同结果的原因是浮点数的精度问题。
在第一种情况下,I22计算为=ROUND(SUM(I7:I21),2),ROUND函数应用于单元格I7:I21的总和,将其四舍五入到小数点后两位。这确保I22中的结果值具有一致的精度水平(两位小数)。
然而,在I22被计算为=SUM(I7:I21)的第二场景中,不应用舍入。这意味着在没有任何特定精度约束的情况下计算总和。因此,根据单元格I7:I21中的值,I22中的值可能具有两个以上的小数位。
当您在单元格K22的IF语句中比较J5和I22时,比较是完全相等的(J5=I22)。由于J5四舍五入到两位小数(396.66),但在第二种情况下I22没有四舍五入(它可能有更多的小数位),因此比较失败,结果为“否”。
在第一个场景中,由于I22被舍入到小数点后两位,因此它与J5的舍入值相匹配,并且比较结果为真,结果为“OK”。
为了确保在两种情况下进行一致的比较,您可以在执行比较之前修改单元格K22中的公式以舍入I22。下面是一个例子:

  1. K22: =IF(ROUND(J5,2)=ROUND(I22,2),"OK","NO")

通过在比较J5和I22之前将它们四舍五入到两位小数,无论在计算期间是否对I22应用了四舍五入,都可以获得所需的结果。

相关问题