BigDecimalとdoubleの変換について
doubleは浮動小数点型なので(?)、小数を正確に表現できないことは知ってました。
で、BigDecimalに変換する際に失敗しました。
以下、やっちゃった間違い。
double d = 0.1; BigDecimal b = new BigDecimal(d); System.out.println(b);
上記の出力結果
0.1000000000000000055511151231257827021181583404541015625
で、0.1を保持するBigDecimalオブジェクトを作成したい場合、
"0.1"という文字列よりBigDecimalを作成する必要があるらしい。
それを簡単にやってくれるのが、BigDecimal#valueOfメソッドだそうで、
double d = 0.1; BigDecimal b = BigDecimal.valueOf(d); System.out.println(b);
上記の出力結果
0.1
と、なりました。