Как преобразовать значение числа строки со знаком доллара в BigDecimal в Java? - PullRequest
23 голосов
/ 26 января 2012

У меня есть сумма в долларах в формате String. Например: String salePrice = $ 348,00.

Однако я хочу преобразовать это строковое значение в значение BigDecimal, но в строке есть знак доллара. Я попробовал код ниже, но он не работает.

BigDecimal sPrice = new BigDecimal(salePrice);

Я получил это исключение ниже:

java.lang.NumberFormatException
    at java.math.BigDecimal.<init>(Unknown Source)
    at java.math.BigDecimal.<init>(Unknown Source)

Ответы [ 3 ]

40 голосов
/ 26 января 2012

Конструктор BigDecimal принимает допустимую числовую строку.

Представление String состоит из необязательного знака, '+' ('\ u002B') или '-' ('\ u002D'), за которым следует последовательность нулей больше десятичных цифр ("целое число"), за которыми может следовать дробь, за которой следует показатель степени.

String salePrice = "$348.00";
String price = salePrice.replace("$","");
BigDecimal sPrice = new BigDecimal(price);
System.out.println(sPrice);

Выход = 348.00

Вы также можете посмотреть NumberFormat class. Используя этот класс, вы можете установить соответствующий Locale.

String salePrice = "$123.45";
Locale locale = Locale.US;
Number number = NumberFormat.getCurrencyInstance(locale).parse(salePrice);
System.out.println(number);

Выход = 123.45

8 голосов
/ 26 января 2012

Сначала удалите знак доллара ($).

3 голосов
/ 26 января 2012

Для конструктора требуется число в строке, ваша строка начинается с $, который не является допустимым числом. Вы должны сначала раздеться.

...