Java: Как правильно преобразовать String в действительную сумму денег (BigDecimal) - PullRequest
3 голосов
/ 09 апреля 2010

Мне нужно преобразовать входящее поле String в поле BigDecimal, которое будет представлять действительную сумму денег, например:

String amount = "1000";

BigDecimal valid_amount = convert(amount);

print(valid_amount.toString())//1000.00

Каков правильный API для преобразования строки в действительную сумму денег в Java (например, библиотека Apache Commons)?

Заранее спасибо,

Ответы [ 5 ]

8 голосов
/ 09 апреля 2010

Как насчет конструктора BigDecimal(String)?

String amount = "1000";
BigDecimal validAmount = new BigDecimal(amount);
System.out.println(validAmount); // prints: 1000

Если вы хотите отформатировать вывод по-другому, используйте класс Formatter.

5 голосов
/ 09 апреля 2010

Вы хотели достичь следующего:?

NumberFormat nf = NumberFormat.getCurrencyInstance();
System.out.println(nf.format(new BigDecimal("1000")));

выход

$1,000.00
0 голосов
/ 16 июня 2017

Если вы хотите распечатать в десятичном виде, используйте метод setScale

String amount = "1000";
BigDecimal validAmount = new 
BigDecimal(amount).setScale(2,RoundingMode.CEILING);
System.out.println(validAmount); // prints: 1000.00
0 голосов
/ 09 апреля 2010

Существует библиотека Joda-Money для работы с денежными ценностями. Но, согласно веб-сайту, «текущая версия разработки предназначена для обратной связи, а не для производственного использования».

0 голосов
/ 09 апреля 2010

Используйте new BigDecimal(strValue).

Избавит вас от огромной боли и страданий, вызванных Злой большой десятичный конструктор

...