Изменение поведения метода stripTrailingZeros класса BigDecimal для нулевого значения

Java 8 вводит изменение поведения в java.math.BigDecimal stripTrailingZeros когда значение равно нулю и имеет ненулевую шкалу. Длина дробной части - это число нулей справа от десятичной точки. До Java 8 метод stripTrailingZeros возвращал само значение. В Java 8 метод возвращает BigDecimal.ZERO, то есть нулевое значение с дробной частью нулевой длины.

Это правило помечает метод stripTrailingZeros класса java.math.BigDecimal. Данное изменение не требует переработки кода, поведение метода теперь соответствует ожидаемому. В процессе подготовки к переходу на Java 8 об этом изменении следует помнить, так как оно может повлиять на результаты тестовых наборов.

Пример использования метода stripTrailingZeros.

< span class="Code"> < span class= "JavaKeyword"> public static void < /span> printResults(< span class="JavaType">BigDecimal< /span> dec) {

System.out.print("Начальная десятичная дробь = " + dec.toPlainString());
System.out.println(" длина дробной части = " + dec.scale());
dec = dec.stripTrailingZeros();
System.out.print("Конечная десятичная дробь = " + dec.toPlainString());
System.out.println(" длина дробной части = " + dec.scale());
}

public static void main(String args[]) {

BigDecimal dec = new BigDecimal("0.000000");
printResults(dec);
}

Если выполнить этот код в Java 7, будет выведена следующая информация:

Начальная десятичная дробь = 0.000000 длина дробной части = 6
Конечная десятичная дробь = 0.000000 длина дробной части = 6

В Java 8 будет выведена следующая информация:

Начальная десятичная дробь = 0.000000 длина дробной части = 6
Конечная десятичная дробь = 0 длина дробной части = 0

Дополнительная информация об этом методе BigDecimal приведена в документации Java по java.math.BigDecimal.