1. ホーム

[解決済み】BigDecimalの小数点以下が常に2桁になるように丸める。

2022-04-04 12:20:28

質問

BigDecimalの値を小数点以下2桁に丸めたいのですが、どうすればいいですか?

使用しているのは

BigDecimal rounded = value.round(new MathContext(2, RoundingMode.CEILING));
logger.trace("rounded {} to {}", value, rounded);

しかし、これでは一貫して私が望むようなことはできません。

rounded 0.819 to 0.82
rounded 1.092 to 1.1
rounded 1.365 to 1.4 // should be 1.37
rounded 2.730 to 2.8 // should be 2.74
rounded 0.819 to 0.82

有効数字にはこだわらず、小数点以下2桁が欲しい。BigDecimalでこれを行うにはどうすればよいのでしょうか?それとも、もっと適したクラスやライブラリがあるのでしょうか?

どのように解決するのですか?

value = value.setScale(2, RoundingMode.CEILING)