BigDecimal - десятичные знаки материала - PullRequest
0 голосов
/ 03 октября 2011

У меня есть значение BigDecimal, и я хочу знать, находится ли количество десятичных разрядов за пределами границы.

Например, если BigDecimal равно 123.456, а моя граница десятичных разрядов равна 2, тогда это будетбыть ошибкой

Однако 123.450 с границей 2 в порядке, так как я считаю, что 0 не имеет значения для этого теста.

Я немного не уверен насчет BigDecimal с его масштабом /немасштабированная реализация.

Я рассмотрел scale() как вариант, но я думаю, что это может быть неправильно для моего случая, когда речь идет о конечных нулях.

Кто-нибудь знает правильный способ проверкиэто?

1 Ответ

4 голосов
/ 03 октября 2011

BigDecimal имеет stripTrailingZeros(). После этого scale() будет делать то, что вы хотите.

ИЛИ вы можете использовать BigDecimal.setScale(2, RoundingMode.UNNECESSARY), который выдаст исключение, если есть ненулевые значения. Для меня это выглядит немного неэффективно в общем случае. Но если вы все равно выбросите исключение, это может быть полезно.

...