W języku Java 8 zmieniono działanie metody java.math.BigDecimal stripTrailingZeros, gdy dana wartość jest równa zero 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.
|
public static void printResults(BigDecimal 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 = 6W środowisku języka Java 8 wyświetlane są następujące dane wyjściowe:
Starting decimal = 0.000000 scale = 6Więcej informacji na temat metody BigDecimal zawiera dokumentacja języka Java: java.math.BigDecimal.