【发布时间】:2019-01-23 21:03:18
【问题描述】:
x=(100+1.0/3)-100
y=1.0/3
z=1+1.0/3-1
x, y, z 在数学上显然具有相同的值,但是
print(x==y)
print(x==z)
print(y==z)
为所有人生成 False 值。
有没有办法让它们在 python 中彼此相等?我不太确定为什么它们不被认为是相同的。我知道四舍五入是造成这种情况的原因,但我不确定为什么 x、y、z 会以不同的方式发生这种情况。
【问题讨论】:
-
由于浮点错误,您无法直接比较浮点数。见:stackoverflow.com/questions/5595425/…
-
也可以是 stackoverflow.com/questions/588004/… 的副本。
-
这与计算机如何处理所谓的floating point arithmetic有关。