【发布时间】:2016-10-15 12:23:57
【问题描述】:
我没有得到这段代码的结果:
a = i = 0.05
b = 1.0
while a <= b:
print a
a += i
当然,这应该打印 0.05,0.1,...,1.0,但迭代会在 0.95 处停止。是浮动问题吗?
【问题讨论】:
-
在循环后添加
print a。并看到价值。我猜是浮动问题。
标签: python while-loop iteration
我没有得到这段代码的结果:
a = i = 0.05
b = 1.0
while a <= b:
print a
a += i
当然,这应该打印 0.05,0.1,...,1.0,但迭代会在 0.95 处停止。是浮动问题吗?
【问题讨论】:
print a。并看到价值。我猜是浮动问题。
标签: python while-loop iteration
是的,您使用的是浮点数,因此您最终不会精确到 1.0。将 b 设置为例如1.001 以适应舍入误差。请注意,您的数字将以二进制表示。如果它们真的是十进制,它们可以被精确地表示。
顺便说一句,我宁愿使用:
for i in range (1, 21):
print i/20.
请注意,. (或 .0)在 20 后面使其成为浮点数,强制浮点除法。
【讨论】:
也许更好的答案如下:
a = i = 0.05
b = 1.0
a = i = int(a * 1000)
b = int(b * 1000)
while a <= b:
print a/1000.0
a += i
这样你就不需要处理浮点数了。给猫剥皮的多种方法。
【讨论】: