JavaのBigDecimalの使い方の注意点

BigDecimalは誤差が出ないように計算ができるクラス。
ただオブジェクトの生成には注意が必要。

文字列から生成する場合

BigDecimal value = new BigDecimal("1234.567");

数値から生成する場合

BigDecimal value = BigDecimal.valueOf(1234.567); // 良い例
BigDecimal value = new BigDecimal(1234.567); // 悪い例

BigDecimal#valueOfは、オブジェクトの再利用をしてくれる。
new BigDecimalは、2進数で正確に表現できない数値を指定すると、誤差が含まれたオブジェクトを生成してしまう。