ばかげた質問があります。これが 488.16 ではなく 488.15999999999997 を与える理由
double dbl = 427.14 + 61.02;
System.out.println(dbl);
これだけの精度(通貨関連のロジックなど)を考えるとBigDecimalを使わないといけないと聞きました。しかし、私はこの背後にあるものを知りたいです。
それは「正常な」動作です。一般に、10 進数の値はコンピューターでは正確に表すことができないため、小さなエラーが忍び寄り始めることを覚えておいてください。What Every Computer Scientist Should Know About Floating-Point Arithmeticを見てみましょう。これは、10 進数値を扱うコードを書く人にとって必読です。
Java Rounding Double の問題 を解決する方法