Подтвердить что ты не робот

Как преобразовать значение номера строки со знаком доллара в BigDecimal в java?

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

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

BigDecimal sPrice = new BigDecimal(salePrice);

В результате я получил это исключение:

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

Ответ 1

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

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

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

Выход = 348.00

Вы также можете посмотреть NumberFormat класс. С помощью этого класса вы можете установить соответствующий Locale.

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

Выход = 123.45

Ответ 2

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

Ответ 3

Конструктор требует Number в строке, ваша строка начинается с $, которая не является допустимым числом. Сначала вам нужно снять его.