为什么下面的语句 return 在 Excel 2010 应该为真时却变成了假值?

Why does the following statement return a FALSE value when it should be true on Excel 2010?

为什么下面的语句 return 应该是 TRUE 却变成了 FALSE?

=IF(ABS((115.43)-(171 - 21.38 - 34.2))<=0.01,TRUE,FALSE)

115.43 - 115.42 = 0.01

有趣的是,当将阈值编辑为 0.02 时,输出为 True。我正在使用 Excel 2010。 感谢任何帮助! :)

这与浮点数用二进制表示的方式有关。当我在 VBA 中评估 115.43 - 115.42 时,答案是 1.00000000000051E-02.

Here's 以 Java 为中心的 post 处理本质上相同的问题,但简短的回答是您不应该期望表达式的计算结果恰好为 0.01简单的数学告诉你它应该。