Форматирование строки BigDecimal с разделителем тысяч (###.###,##)

У меня есть BigDecimal, значение которого я хочу преобразовать в строку и НЕ потерять точность.

Я хотел бы использовать формат ###.###,## (запятая для тысяч, точка для десятичных знаков).

Единственный способ, которым я сделал эту работу, - использовать

DecimalFormat formatter = new DecimalFormat("###.###,##");
formatter.format(bd.doubleValue());

... но я боюсь, что таким образом могу потерять информацию, а точность обязательна, потому что я имею дело с валютой (каждая копейка на счету).

Дополнительная информация: я буду иметь дело только с суммами до 1 миллиона, если это поможет.


person blashyrk    schedule 25.12.2013    source источник


Ответы (1)


Чтобы быть в безопасности, вы можете умножить BigDecimal на 100.
Затем получить его intValue -> сказать N. Затем получить N/100 и N%100.
Таким образом, вы не можете потерять точность (N ‹= 100 миллионов не могут переполнить целое число).

person peter.petrov    schedule 25.12.2013