python:while循环没有到达最后一次迭代

时间:2016-10-15 12:23:58

标签: python while-loop iteration

我无法获得此代码的结果:

1.5  1.6  3.0  4.0  1.2  1.3
1.7  1.1  2.6  3.4  1.5  1.6
......

当然这应该打印0.05,0.1,...,1.0但是迭代停止在0.95。这是浮动问题吗?

2 个答案:

答案 0 :(得分:0)

是的,你正在使用浮点数,因此你不会完全达到1.0。将b设置为例如1.001以应对舍入错误。请注意,您的数字将以二进制表示。如果它们是真正的十进制数,则可以完全表示它们。

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

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

注意。 (或.0)在20后面使它成为一个浮动,迫使浮动分裂。

答案 1 :(得分:0)

或许更好的答案如下:

create or replace function select_from_a_table(limit1 numeric, limit2 numeric)
returns setof a_table language sql as $$
    select *
    from a_table
    where value3 >= limit1
    union all
    select value1, 0, max(value3)
    from a_table
    group by value1
    having max(value3) <= limit2;
$$;

select * from select_from_a_table(0.8, 0.2);

 value1 | value2 | value3 
--------+--------+--------
      1 |      1 |    0.9
      1 |      2 |    0.8
      2 |      0 |   0.15
(3 rows)

这样你根本不需要处理浮点数。许多方法给猫皮肤。