重複の可能性:
浮動小数点の不正確な例
Java でモジュロ演算子を使用すると、期待する数値が得られません。
私がやっていることは次のとおりです。
double input = 5.59;
System.out.println("Output: " + (input % 2));
結果として 1.59 が表示されることを期待していますが、1.5899999999999999 が出力されています。これがなぜであるかについての手がかりはありますか?
重複の可能性:
浮動小数点の不正確な例
Java でモジュロ演算子を使用すると、期待する数値が得られません。
私がやっていることは次のとおりです。
double input = 5.59;
System.out.println("Output: " + (input % 2));
結果として 1.59 が表示されることを期待していますが、1.5899999999999999 が出力されています。これがなぜであるかについての手がかりはありますか?
これは浮動小数点の不正確さから来ています。これは、何が起こっているのかを正確に説明する素晴らしい SO 回答です。
数値を丸めたい場合は、次のような書式設定を使用する必要があります。
double input = 5.59;
System.out.format("Output: %.2f%n", (input % 2));
お役に立てれば!
Doubleの精度のためです。目的の出力を実現するには、フォーマットする必要があります。
double input = 5.59;
System.out.println("Output: " + new DecimalFormat("00.00").format(input % 2));
Output: 1.59 と表示されます。