我知道数字 0.3 不能用二进制精确表示,这就是为什么要这样做:
0.1+0.2==0.3
给出False
作为答案。
但是,即使数字不能精确表示,结果仍应为 True。这是我的推理:
Python 将执行 0.1+0.2 运算,结果不会正好是 0.3,而是某个接近 0.3 的数字将被存储为比较的左操作数。
但是它必须采用正确的操作数 0.3
,将其转换为数字,这将再次给出不完全等于 0.3 的数字,并将其存储为比较的右操作数。
最后比较两个数字。
所以结果实际上应该给出 True,即使在内部它将比较两个数字并且它们实际上都不是 0.3
我在这里缺少什么?如果数字无法精确表示,那么这对于两个操作数都必须成立,因此我们将比较类似的内容
0.1+0.2==0.3
0.30000000000000004 == 0.30000000000000004
True
最佳答案
表示 0.1 的误差加上表示 0.2 的误差不一定等于表示 0.3 的误差。
关于python - 浮点精度仍应给出正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58065921/