【发布时间】:2015-04-15 06:42:25
【问题描述】:
我编写了一个小型 python 程序,由于我不知道的原因,它陷入了循环。
这是我的代码:
a = 0
b = 1
step = 0.1
while True:
if a == b:
print 'exit'
break
if a < b:
a += step
print a
if a > b:
a -= step
print a
这是输出:
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1
1.0
1.1
1.0
[...]
为什么循环没有终止,却产生大于 1 的值?
编辑:
我现在已经用十进制模块完成了:
from decimal import *
getcontext().prec = 1
a = 0
b = 1
step = Decimal('0.1')
while True:
if a == b:
print 'exit'
break
if a < b:
a += step
print a
if a > b:
a -= step
print a
【问题讨论】:
-
浮点数几乎从不相等。 floating-point-gui.de
-
@deceze 你应该把它放在一个答案中。
-
@Frank 我敢肯定在某个地方有一个很好的复制品,有人会因为他们在
python标签的家中而立即抽出... Martijn...? :) -
也许你应该使用 if()...elif()...else... 结构。并且浮动变量没有正确比较。
标签: python loops if-statement