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

A Java 8 viselkedésváltozást vezet be a java.math.BigDecimal stripTrailingZeros Metódus, ha az érték numerikusan nulla, és nem nulla. 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.

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

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.