BigDecimal の丸め(RoundingMode.HALF_DOWN) でうっかりしたこと

Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle の丸め処理で、Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle の HALF_DOWN を指定した際にうっかりしたのでメモ。*1


てっきり、五捨六入 みたいなイメージ持ってたんだけどそうじゃないのね。

ドキュメント読めばわかるんだけど、0.5 を超えると切り上げるって書いてます。
なので、五捨六入 みたいなことがしたければこんな感じで一度対象桁以降を切り捨ててからしないとダメ。

new BigDecimal("2.500001").setScale(1, RoundingMode.DOWN).setScale(0, RoundingMode.HALF_DOWN);

*1:HALF_DOWN なんて中々使わないんだけど…