我知道数字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 :(得分:2)
表示0.1的误差加上表示0.2的误差不一定等于表示0.3的误差。