Geändertes Verhalten in der Methode BigDecimal stripTrailingZeros für den Wert null

In Java 8 wurde das Verhalten der Methode java.math.BigDecimal stripTrailingZeros geändert, wenn der Wert numerisch gleich null ist und mindestens eine Nachkommastelle hat. Die Nachkommastellen sind in diesem Fall die Anzahl der Nullen rechts vom Dezimaltrennzeichen. In den Java-Versionen vor Java 8 gibt die Methode stripTrailingZeros den Wert selbst zurück. In Java 8 gibt die Methode BigDecimal.ZERO zurück, d. h. den Wert null ohne Nachkommastellen.

Diese Regel markiert die Methode "java.math.BigDecimal stripTrailingZeros". Für diese Verhaltensänderung, die jetzt das erwartete Verhalten der Methode bewirkt, ist keine Codeänderung erforderlich. Beachten Sie diesen Unterschied bei den Vorbereitungen für den Einsatz von Java 8, weil er zum Fehlschlagen von Testfällen führen kann.

Das folgende Beispiel veranschaulicht die Verwendung der Methode 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);
}

Wenn Sie diesen Code mit Java 7 aufrufen, wird die folgende Ausgabe angezeigt:

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

In Java 8 wird die folgende Ausgabe angezeigt:

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

Weitere Informationen zur Methode "BigDecimal" finden Sie in der Java-Dokumentation java.math.BigDecimal.