-1
double foo = 3;
double bar = 2.1;

System.out.println(foo - bar + "");

出力:

0.8999999999999999

なんで?これは単なる人間には理解できない Java のジョークですか?

4

1 に答える 1

4

冗談じゃない。 浮動小数点精度エラーの問題です。 この問題の主な要点は、浮動小数点数が 10 ではなく基数 2 で表されることと、 の精度がdoubles任意ではないことです。

精度が必要な場合は、BigDecimalクラスを使用できます。

于 2013-07-20T02:22:12.887 に答える