【发布时间】:2012-05-07 19:29:46
【问题描述】:
我目前正在使用 Python 做一些事情,但在分配变量时会出现一些奇怪的行为。例如,我在 ipython 控制台中将“a”设置为 0.1:
In [1]: a = 0.1
然后我打印一个:
In [2]: a
Out[2]: 0.10000000000000001
In [3]: a == 0.1
Out[3]: True
In [4]: a == 0.10000000000000001
Out[4]: True
好吧,也许是因为数字的有限表示(最后一个 1 在第 16 位)。但后来:
In [17]: 1 == 0.10000000000000001
Out[17]: False
我必须为此感到害怕吗?因为我是 ! ;-)
【问题讨论】:
-
“也许是因为数字的有限表示” 是的!
1 == 0.10000000000000001(因此1 == 0.1)应该在哪个宇宙中为真? -
见this问题。
-
@NiklasB.:“我有必要被这个吓到吗?”
-
@Chris:我看到了 :) 关键是,“this”指的是什么?
1 != 0.1?如果不是,我宁愿害怕。 -
这些内容记录在每一种使用浮点数的语言的手册中。现在还有人为自己读书吗?
标签: python variables variable-assignment