值正如我们所知,由于数字的二进制表示,该表达式的计算结果为False
(至少在Python):使用math.isclose功能与接近0
0.2 + 0.4 == 0.6
为了能够检查数值误差范围内的平等,模块math
提供isclose
:
import math
math.isclose(0.2 + 0.4 , 0.6)
这最后一个表达式产生True
预期。
现在为什么下面的表达式再次是False
?
math.isclose(0.2 + 0.4 - 0.6 , 0.0)
看来,一切都比较0.0
是False
math.isclose(1.0e-100 , 0.0)
mmph。我确实阅读了文档,并指出我可以设置相对和绝对容差。但我不知何故错过了默认的绝对容差为0.0。也许我应该去睡觉......谢谢大卫 – steffen
为了完整性,[原始PEP](https://www.python.org/dev/peps/pep-0485/#absolute-tolerance-default)解释了为什么绝对公差为0:*“确定值是否”接近“为零所需的绝对容差完全取决于用例。”* –