BigDecimal stripTrailingZeros 方法中對於零值的行為變更

Java 8 在中引進行為變更 java.math.BigDecimal stripTrailingZeros 當值在數值上等於零且具有非零小數位數時的方法。 小位數位是指小數點右邊的零位數。 在 Java 8 之前,stripTrailingZeros 方法會傳回值本身。 在 Java 8 中,此方法會傳回 BigDecimal.ZERO,即小數位數為零的零值。

此規則會標示 java.math.BigDecimal stripTrailingZeros 方法。這項行為變更不需要變更任何程式碼,現在會產生預期的方法行為。 當您準備使用 Java 8 時,請注意此差異,因為可能會造成測試案例失敗。

下列範例顯示 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);
}

如果您使用 Java 7 呼叫這段程式碼,將會顯示下列輸出:

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

在 Java 8 中會顯示下列輸出:

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

如需 BigDecimal 方法的相關資訊,請參閱 java.math.BigDecimal Java 說明文件。