重複の可能性:
Java で Doubles を使用して精度を保持する
わかりましたので、次のコードのチャンクを取得しました。
int rotation = e.getWheelRotation();
if(rotation < 0)
zoom(zoom + rotation * -.05);
else if(zoom - .05 > 0)
zoom(zoom - rotation * .05);
System.out.println(zoom);
現在、ズーム変数は double 型で、最初は 1 に設定されています。したがって、結果は 1 - .05 = .95; のようになると予想されます。.95 - .05 = .9; .9 - .05 = .85; など。以下に示すように結果を印刷すると、そうではないように見えます。
- 0.95
- 0.8999999999999999
- 0.8499999999999999
- 0.7999999999999998
- 0.7499999999999998
- 0.6999999999999997
誰かが明確に説明できることを願っています。インターネットを検索したところ、フロートをバイナリで保存する際の制限と関係があると読みましたが、まだよくわかりません。私の問題の解決策は驚くほど重要ではありませんが、この種の動作を理解したいと思います。