Разъяснение о поведении BigDecimal.stripTrailingZeroes () - PullRequest
6 голосов
/ 09 марта 2011

Почему следующий код печатает 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 ]

5 голосов
/ 02 сентября 2011

Я думаю, что это ошибка: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6480539

0 голосов
/ 09 марта 2011

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

...