我写了一个小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
答案 0 :(得分:1)
你永远不应该检查浮点值的相等性。最好的方法是对错误使用约束。
if abs(a - b) <= allowed_error :
do something