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 = 6Java 8 では、以下の出力が表示されます。
Starting decimal = 0.000000 scale = 6BigDecimal メソッドについて詳しくは、 java.math.BigDecimal に関する Java 資料を参照してください。