Как проверить точность и масштаб с помощью BigDecimal?

Я пытаюсь проверить точность и масштаб большого десятичного знака.

Я ищу, чтобы проверить большое десятичное значение, не превышает 10 или шкалу. Я попытался сделать maxlength, поэтому значение не будет нарушать мои ограничения длины db, но не смог получить это также работает. Может ли кто-то любезно указать мне на решение этой проблемы?

Ответ 1

Класс BigDecimal имеет три метода, которые могут представлять интерес для этого:

  • precision(), который возвращает количество цифр для немасштабированного значения (например, для числа 123.45, возвращаемая точность равна 5)
  • scale(), который возвращает число цифр после десятичного разделителя, когда положительный (scale() может быть отрицательным, в этом случае немасштабированное значение числа умножается на десять на силу отрицания шкалы Например, шкала -3 означает, что значение немасштабированного значения умножается на 1000),
  • stripTrailingZeros(), который возвращает BigDecimal со всеми конечными нулями, удаленными из представления.

Например, чтобы вычислить точность и масштаб для данного BigDecimal b, мы можем написать что-то вроде этого:

BigDecimal noZero = b.stripTrailingZeros();
int scale = noZero.scale();
int precision = noZero.precision();    
if (scale < 0) { // Adjust for negative scale
    precision -= scale;
    scale = 0;        
}