Zmiana działania metody stripTrailingZeros klasy BigDecimal w przypadku wartości zerowej

Java 8 wprowadza zmianę zachowania java.math.BigDecimal stripTrailingZeros Metoda, gdy wartość jest numerycznie równa zeru i ma niezerową skalę. Skala określa liczbę zer po prawej stronie pozycji dziesiętnej. W wersjach wcześniejszych niż Java 8 metoda stripTrailingZeros zwracała samą wartość. W języku Java 8 metoda ta zwraca wartość BigDecimal.ZERO, która jest wartością zerową z zerową skalą.

Ta reguła powoduje oznaczenie metody stripTrailingZeros klasy java.math.BigDecimal. Ta zmiana działania nie wymaga żadnej zmiany kodu, ponieważ metoda działa obecnie zgodnie z oczekiwaniem. Przygotowując się do używania środowiska Java 8, należy pamiętać o tej różnicy, ponieważ może ona spowodować niepowodzenie przypadków testowych.

W poniższym przykładzie przedstawiono sposób użycia metody stripTrailingZeros.

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

System.out.print("Starting decimal = " + dec.toPlainString());
System.out.println(" scale = " + dec.scale());
dec = dec.stripTrailingZeros();
System.out.print("Ending decimal = " + dec.toPlainString());
System.out.println(" scale = " + dec.scale());
}

public static void main(String args[]) {

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

Jeśli ten kod zostanie wywołany w środowisku języka Java 7, zostaną wyświetlone następujące dane wyjściowe:

Starting decimal = 0.000000 scale = 6
Ending decimal = 0.000000 scale = 6

W środowisku języka Java 8 wyświetlane są następujące dane wyjściowe:

Starting decimal = 0.000000 scale = 6
Ending decimal = 0 scale = 0

Więcej informacji na temat metody BigDecimal zawiera dokumentacja języka Java: java.math.BigDecimal.