2011-10-03 1 views
0

저는 BigDecimal 값을 가지고 있으며 소수점 이하 자릿수가 경계 밖에 있는지 알고 싶습니다.BigDecimal - 머티리얼 소수 자릿수

BigDecimal이 123.456이고 소수 자리수가 2 인 경우 이 경우 오류가 발생합니다.

그러나이 테스트에서는 0을 중요하지 않으므로 경계가 2 인 123.450은 괜찮습니다.

스케일/비 눈금 구현을 사용하면 BigDecimal에 대해 확신 할 수 없습니다.

옵션으로 scale()을 보았습니다. 그러나이 경우 제자리에 0이 붙는 경우에는 잘못된 것일 수 있습니다.

누구나 올바른 테스트 방법을 알고 있습니까?

답변

4

BigDecimalstripTrailingZeros()입니다. 그 후 scale() 당신이 원하는 것을 할 것입니다.

또는 0이 아닌 경우 예외를 throw하는 BigDecimal.setScale(2, RoundingMode.UNNECESSARY)을 사용할 수 있습니다. 내게 이것은 일반적인 경우에 비효율적 인 것처럼 보입니다. 그러나 어쨌든 예외를 던지면 유용 할 수 있습니다.