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在 Java 8 中,将显示以下输出:
Starting decimal = 0.000000 scale = 6有关 BigDecimal 方法的更多信息,请参阅 java.math.BigDecimal Java 文档。