ほとんどのプログラミング言語で浮動小数点が 100% 正確ではないことは承知していますが、奇妙な問題に遭遇しました。私はまだ Python を学んでいるので、可能な限り少ない量のコインで与えられた釣り銭を計算する簡単なプログラムを作成しました。しかし、0.02 になると、2 ペンス コインの発行に失敗したように見え、代わりに 2 枚の 1 ペンス コインに分割されます。コード スニペットは次のようになります。
....
elif amountLeft / 0.02 >= 1:
changeGiven.append("2p")
amountLeft -= 0.02
else:
changeGiven.append("1p")
amountLeft -= 0.01
私はhttp://www.pythontutor.comでそれを見てきましたが、それまでに削減されるものの最終的な反復には明らか0.02
にあります。amountLeft
確認すると、期待どおりprint 0.02 / 0.02 >= 1
に戻りTrue
ます。
ここで私が見逃している明らかなことは何ですか?