Cambio de comportamiento en el método BigDecimal stripTrailingZeros para un valor cero

Java 8 introduce un cambio de comportamiento en el java.math.BigDecimal stripTrailingZeros cuando el valor es numéricamente igual a cero y tiene una escala distinta de cero. La escala es el número de ceros situados a la derecha de la coma decimal. En las versiones anteriores a Java 8, el resultado del método stripTrailingZeros era el propio valor. En Java 8, el método devuelve BigDecimal.ZERO, que es el valor cero con una escala igual a cero.

Esta regla señala la aparición del método java.math.BigDecimal stripTrailingZeros. No es necesario ningún cambio en el código para este cambio de comportamiento, el cual ahora produce el comportamiento esperado del método. Cuando se prepare para utilizar Java 8, tenga en cuenta esta diferencia, pues puede producir errores en casos de prueba.

El ejemplo siguiente muestra el uso del método 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 ejecuta este código utilizando Java 7, el resultado será:

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

En Java 8, el resultado obtenido es:

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

Para obtener más información sobre el método BigDecimal, consulte la documentación de Java de java.math.BigDecimal