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

Java 8 a ajouté un changement de comportement dans la méthode java.math.BigDecimal stripTrailingZeros lorsque la valeur est é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.

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

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.