通过参考比较浮点数

时间:2019-05-06 08:03:21

标签: python

我很好奇为什么float(2) is 2.0不是True

>>> 2.0 is 2.0
True
>>> float(2.0) is 2.0
True
>>> float(2) is 2.0
False
>>> id(float(2))
140417897366248
>>> id(2.0)
140417897366248
>>> id(float(2)) == id(2.0)
False
>>> id(float(2)), id(2.0)
(140417897366272, 140417897366248)

在Linux上的Python 3.6.6中进行了测试。

我理解口译员在这里所做的基本原则,但是我仍然好奇在这种特殊情况下会发生什么。因此,为什么将float(2)2.0作为两个单独的编译单元进行处理时,会返回相同的引用,但是当将其作为一个编译单元进行处理时,情况就不再如此。 This answer is the closest I could find,但无法回答为什么返回像这样的简单False浮点数的问题。

0 个答案:

没有答案