Разъяснение поведения BigDecimal.stripTrailingZeroes()


Почему следующий код печатает 0.00 , а не 0?

BigDecimal big = new BigDecimal("0.00");
big = big.stripTrailingZeros();
System.out.println(big.toPlainString());

Ниже приведена документация для stripTrailingZeroes:

Возвращает BigDecimal, который численно равен этому, но с любыми конечными нулями, удаленными из представления. Например, удаление конечных нулей из BigDecimal значения 600.0, которое имеет компоненты [BigInteger, scale], равные [6000, 1], дает 6E2 с компонентами [BigInteger, scale], равными [6, -2]

Возвращает:
один численно равный BigDecimal с любыми удаленными конечными нулями.
2 6

2 ответа:

Он удаляет конечные нули внутреннего представления [6000,1] и соответственно адаптирует масштаб 1 -> -2. Внутреннее представление также в некоторой степени не зависит от окончательной распечатки, которая также зависит от формата, округления и локализации.