【发布时间】:2018-12-12 18:42:58
【问题描述】:
float(1.0) is float(1.0) #True
float(1) is float(1) #False
我已将此处的 float() 怪异与对象创建顺序隔离开来,因为
x1 = float(1)
x2 = float(1)
x1 is x2 #False
id(x1) == id(x2) #False
y1 = float(1.0)
y2 = float(1.0)
y1 is y2 #True
id(y1) == id(y2) #True
注意:我已经检查了浮点数的精度,但这不是发生这种情况的原因。
我想了解 Python 为什么以及如何决定创建浮点对象。 为什么 float(1.0) 指向同一个对象,而 float(1) 指向 2 个不同的对象,其中一个对象被创建了两次?
另外,供进一步参考:
float(1) is float(1) #False
id(float(1)) == id(float(1)) #True
float(1.0) is float(1.0) #True
id(float(1.0)) == id(float(1.0)) #True
【问题讨论】:
-
is与==不同。 -
IornPython ... 4 个陈述都是错误的
-
@Austin 我很清楚
is与==不同。请阅读问题。我显然是在询问对象创建顺序。 -
@ycx,我没有回答你的问题,这就是为什么它是一个评论。
-
@wim 我。好奇心。是的。
标签: python python-3.x floating-point