Viselkedésváltozás a BigDecimal stripTrailingZeros metódusban nulla érték esetén

A Java 8 bevezet egy viselkedésváltozást a java.math.BigDecimal stripTrailingZeros metódusban, amikor az érték egy numerikusan nullával egyenlő érték egy nem nulla skálán. A scale (skála) a tizedesponttól jobbra lévő nullák száma. A Java 8 előtt a stripTrailingZeros metódus magát az értéket adta vissza. A Java 8 változatban a metódus a BigDecimal.ZERO értéket adja vissza, ami nulla érték egy nulla skálával.

Ez a szabály megjelöli a java.math.BigDecimal stripTrailingZeros metódust. A viselkedésváltozás miatt nincs szükség a kód módosítására, amely most a metódus elvárt viselkedését adja. A Java 8 használatára való felkészülés során legyen tudatában ennek a különbségnek, mivel ez a tesztesetek meghiúsulását okozhatja.

A következő példa bemutatja a stripTrailingZeros metódus használatát.

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

Ha ezt a kódot Java 7 használatával hívja meg, akkor a következő kimenet jelenik meg:

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

Java 8 használata esetén a következő kimenet jelenik meg:

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

A BigDecimal metódussal kapcsolatos további információkért tekintse meg a java.math.BigDecimal Java dokumentációt.