2016-10-15 4 views
0

に到達していない間、私はこのコードの結果を得ることはありません。もちろんのpython:ループが最後の繰り返し

a = i = 0.05 
b = 1.0 
while a <= b: 
    print a 
    a += i 

これは1.0、...、0.05,0.1を印刷する必要がありますが、代わりに反復はで停止します0.95であった。それは浮動問題ですか?

+0

ループの後に 'print a'を追加します。そして値を見てください。浮動小数点での問題だと思います。 –

答えて

0

はい、浮動小数点数を扱っているので、1.0に正確にはなりません。 bを例えばに設定します。 1.001は丸め誤差に対応しています。あなたの数字はバイナリで表されることに注意してください。彼らが本当に小数だったならば、正確に表すことができました。

ところで、私はむしろ使用したい:

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

なお。 20の背後にある(または.0)はフロートになり、フロートの分割が強制されます。

0

おそらくより良い答えは次のようになります。

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 

あなたは文句を言わない、すべての浮動小数点数に対処する必要があるこの方法です。猫をスキンケアする多くの方法。

関連する問題