В Java 8 изменилось поведение метода java.math.BigDecimal stripTrailingZeros,
когда значение численно равно нулю и имеет ненулевую длину дробной части.
Длина дробной части - это число нулей справа от десятичной точки.
До Java 8 метод stripTrailingZeros возвращал само значение.
В Java 8 метод возвращает BigDecimal.ZERO, то есть нулевое значение с дробной частью нулевой длины.
Это правило помечает метод stripTrailingZeros класса java.math.BigDecimal. Данное изменение не требует переработки кода, поведение метода теперь соответствует ожидаемому. В процессе подготовки к переходу на Java 8 об этом изменении следует помнить, так как оно может повлиять на результаты тестовых наборов.
Пример использования метода stripTrailingZeros.
|
public static void printResults(BigDecimal 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В Java 8 будет выведена следующая информация:
Начальная десятичная дробь = 0.000000 длина дробной части = 6Дополнительная информация об этом методе BigDecimal приведена в документации Java по java.math.BigDecimal.