Změna chování v metodě BigDecimal stripTrailingZeros pro nulovou hodnotu

Java 8 zavádí změnu chování v metodě java.math.BigDecimal stripTrailingZeros v případě, že hodnota je numericky rovna nule a s nenulovým počtem desetinných míst. Scale je počet nul napravo od desetinné čárky. Před verzí Java 8 vrátila metoda stripTrailingZeros samotnou hodnotu. V Java 8 metoda vrací BigDecimal.ZERO, což je hodnota nuly s nulovým počtem desetinných míst.

Toto pravidlo označí metodu java.math.BigDecimal stripTrailingZeros. Pro tuto změnu chování není vyžadována žádná změna kódu, která nyní vytváří očekávané chování metody. Protože se připravujete na použití Java 8, uvědomte si tento rozdíl, protože může dojít k nezdaru testovacích případů.

Následující příklad ukazuje použití metody stripTrailingNuros.

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);
}

Voláte-li tento kód pomocí Java 7, zobrazí se následující výstup:

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

V Java 8 se zobrazí následující výstup:

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

Další informace o metodě BigDecimal viz dokumentace Java java.math.BigDecimal.