【问题标题】:python: while loop does not reach last iterationpython:while循环没有达到最后一次迭代
【发布时间】: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


【解决方案1】:

是的,您使用的是浮点数,因此您最终不会精确到 1.0。将 b 设置为例如1.001 以适应舍入误差。请注意,您的数字将以二进制表示。如果它们真的是十进制,它们可以被精确地表示。

顺便说一句,我宁愿使用:

for i in range (1, 21):
    print i/20.

请注意,. (或 .0)在 20 后面使其成为浮点数,强制浮点除法。

【讨论】:

    【解决方案2】:

    也许更好的答案如下:

    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
    

    这样你就不需要处理浮点数了。给猫剥皮的多种方法。

    【讨论】:

      猜你喜欢
      • 2016-04-23
      • 2013-03-18
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 2011-07-11
      相关资源
      最近更新 更多