[java] BigDecimal을 * 항상 * 반올림하는 경우 소수점 이하 두 자리가 있습니다.

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로 어떻게해야합니까? 아니면 이것에 더 적합한 다른 클래스 / 라이브러리가 있습니까?



답변

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


답변