に到達していない間、私はこのコードの結果を得ることはありません。もちろんのpython:ループが最後の繰り返し
a = i = 0.05
b = 1.0
while a <= b:
print a
a += i
これは1.0、...、0.05,0.1を印刷する必要がありますが、代わりに反復はで停止します0.95であった。それは浮動問題ですか?
に到達していない間、私はこのコードの結果を得ることはありません。もちろんのpython:ループが最後の繰り返し
a = i = 0.05
b = 1.0
while a <= b:
print a
a += i
これは1.0、...、0.05,0.1を印刷する必要がありますが、代わりに反復はで停止します0.95であった。それは浮動問題ですか?
はい、浮動小数点数を扱っているので、1.0に正確にはなりません。 bを例えばに設定します。 1.001は丸め誤差に対応しています。あなたの数字はバイナリで表されることに注意してください。彼らが本当に小数だったならば、正確に表すことができました。
ところで、私はむしろ使用したい:
for i in range (1, 21):
print i/20.
なお。 20の背後にある(または.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
あなたは文句を言わない、すべての浮動小数点数に対処する必要があるこの方法です。猫をスキンケアする多くの方法。
ループの後に 'print a'を追加します。そして値を見てください。浮動小数点での問題だと思います。 –