ゼロ値に対する BigDecimal stripTrailingZeros メソッドの振る舞いの変更

Java 8 では、以下の動作が変更されています。 java.math.BigDecimal stripTrailingZeros 値が数値的にゼロに等しく、位取りがゼロ以外の場合のメソッド。 小数点以下桁数とは、小数点の右側のゼロの数です。 Java 8 より前では、stripTrailingZeros メソッドは値自体を返していました。 Java 8 では、このメソッドは BigDecimal.ZERO (小数点以下桁数がゼロのゼロ値) を返すようになりました。

この規則により、java.math.BigDecimal stripTrailingZeros メソッドにフラグを立てます。この振る舞いの変更によりメソッドに予期される振る舞いが発生するようになったため、この変更のためにコードを変更する必要はありません。 この変更によってテスト・ケースに障害が発生する可能性があるため、Java 8 の使用に備える際にはこの変更を認識しておいてください。

以下の例では、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);
}

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 資料を参照してください。