浮点精度仍应给出正确的结果

时间:2019-09-23 15:43:41

标签: python floating-point precision

我知道数字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

1 个答案:

答案 0 :(得分:2)

表示0.1的误差加上表示0.2的误差不一定等于表示0.3的误差。