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

Java 8 zavádí změnu chování v java.math.BigDecimal stripTrailingZeros pokud je hodnota numericky rovna nule a má nenulové měřítko. 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.

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

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.