Changement de comportement dans la méthode BigDecimal stripTrailingZeros pour une valeur zéro

Java 8 introduit un changement de comportement dans le java.math.BigDecimal stripTrailingZeros Méthode lorsque la valeur est numériquement égale à zéro et a une échelle différente de zéro. Echelle correspond au nombre de zéros après la virgule. Avant Java 8, la méthode stripTrailingZeros renvoyait la valeur elle-même. Dans Java 8, la méthode renvoie BigDecimal.ZERO, ce qui correspond à la valeur zéro avec une échelle égale à zéro.

Cette règle marque la méthode java.math.BigDecimal stripTrailingZeros. Aucune modification de code n'est requise pour ce changement de comportement. La méthode fonctionne dorénavant comme cela était prévu. Alors que vous préparez à utiliser Java 8, prenez en compte cette différence car elle peut provoquer l'échec de ces scénarios de test.

L'exemple suivant présente l'utilisation de la méthode stripTrailingZeros.

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

Si vous appelez ce code en utilisant Java 7, la sortie suivante s'affiche :

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

Dans Java 8, la sortie suivante s'affiche :

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

Pour plus d'informations sur la méthode BigDecimal, voir la documentation Java java.math.BigDecimal.