Разъяснение поведения 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 ответа:
Он удаляет конечные нули внутреннего представления
[6000,1]
и соответственно адаптирует масштаб1 -> -2
. Внутреннее представление также в некоторой степени не зависит от окончательной распечатки, которая также зависит от формата, округления и локализации.
Я думаю, что это ошибка: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6480539