Я пытаюсь округлить значения BigDecimal до двух десятичных знаков.
я использую
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
Меня не волнуют значащие цифры, я просто хочу два знака после запятой. Как мне сделать это с BigDecimal? Или другой класс / библиотека лучше подходит для этого?
java
math
bigdecimal
rounding
Брэд Мейс
источник
источник
Ответы:
источник
round()
работает со значительными цифрами, в то время какsetScale
работает с фиксированным числом десятичных разрядов, или это еще не все?RoundingMode.HALF_UP
. Согласно документации это метод округления, которому обычно учат в школах - то, что мне было нужно.setScale(...)
работает? см. BigDecimal setScale и раунд .