double foo = 3;
double bar = 2.1;
System.out.println(foo - bar + "");
出力:
0.8999999999999999
なんで?これは単なる人間には理解できない Java のジョークですか?
double foo = 3;
double bar = 2.1;
System.out.println(foo - bar + "");
出力:
0.8999999999999999
なんで?これは単なる人間には理解できない Java のジョークですか?
冗談じゃない。 浮動小数点精度エラーの問題です。 この問題の主な要点は、浮動小数点数が 10 ではなく基数 2 で表されることと、 の精度がdoubles
任意ではないことです。
精度が必要な場合は、BigDecimalクラスを使用できます。