#java #bigdecimal
#java #bigdecimal
Вопрос:
У меня есть значение BigDecimal, и я хочу знать, находится ли количество десятичных разрядов, которое оно имеет, за пределами границы.
например, если BigDecimal равно 123,456, а моя граница десятичных разрядов равна 2, то это будет ошибкой
Однако 123.450 с границей 2 в порядке, поскольку я считаю, что 0 не имеет значения для этого теста.
Я немного не уверен в BigDecimal с его масштабируемой / немасштабируемой реализацией.
Я рассматривал scale()
это как вариант, но я думаю, что это может быть неправильно для моего случая, когда речь идет о конечных нулях.
Кто-нибудь знает правильный способ проверить это?
Ответ №1:
BigDecimal
имеет stripTrailingZeros()
. После этого scale()
вы будете делать то, что хотите.
ИЛИ вы могли бы использовать BigDecimal.setScale(2, RoundingMode.UNNECESSARY)
which выдаст исключение, если есть ненулевые значения. Для меня это выглядит немного неэффективно в общем случае. Но если вы все равно создадите исключение, это может быть полезно.