コンピューターは非整数を正確に表すことができないことを理解しています。たとえば、Javaで2つのdoubleを追加すると、次のようになります。
724.64d + 1000d
コンソールのプリントアウト1724.6399999999999
724.64d + 100d
しかし、なぜ724.64d + 10000d
コンソールは824.64と10724.64を別々に印刷しますか?
2つの倍精度浮動小数点数を加算したときにどのような条件で合計が正確な数であるかを知る方法はありますか?
私が尋ねる理由は、私たちの古いプログラムが計算を行うためにdoubleを使用しているからです。二重比較を使用して数値を検証します。例:合計がであるとすると、合計1849.64
されたすべての入力量は合計と等しくなければなりません。1849.64
input 1: 724.64
input 2: 1125
合計が1849.6399999999999になるため、機能しません
しかし、このように入力すると、以下が機能し、合計は1849.64になります。
input 1: 24.64
input 2: 1825
では、うまくいく組み合わせを見つける方法は?注意してください、私はこの特定の非常に古いプログラムにアクセスできません。検証が失敗した場合、2番目の入力の組み合わせのようなウォークアラウンドを手動で見つける必要があります。ありがとう。