用于零值的 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 文档。