Modificarea comportamentului în metoda BigDecimal stripTrailingZeros pentru o valoare zero

Java 8 introduce o modificare de comportament în metoda java.math.BigDecimal stripTrailingZeros atunci când valoarea este numeric egală cu zero şi are o scală nonzero. Scale este numărul de zerouri la dreapta punctului zecimal. Anterior versiunii Java 8, metoda stripTrailingZeros a returnat valoarea în sine. În Java 8, metoda returnează BigDecimal.ZERO, care este valoarea zero cu o scală de zero.

Această regulă semnalează metoda java.math.BigDecimal stripTrailingZeros. Nu este necesară nicio schimbare de cod pentru această schimbare de comportament care acum produce comportamentul aşteptat al metodei. Întrucât vă pregătiţi să folosiţi Java 8, fiţi conştient de această diferenţă pentru că ar putea cauza eşuarea cazurilor de test.

Următorul exemplu arată utilizarea metodei 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);
}

Dacă apelaţi acest cod folosind Java 7, este afişat următorul rezultat:

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

În Java 8, este afişat următorul rezultat:

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

Pentru mai multe informaţii despre metoda BigDecimal, vedeţi documentaţia Java java.math.BigDecimal.