web-dev-qa-db-fra.com

Comment convertir une valeur de numéro de chaîne avec un signe dollar en BigDecimal en Java?

J'ai un montant en dollars au format String. Par exemple: String salePrice = 348,00 $.

Cependant, je veux convertir cette valeur de chaîne en une valeur BigDecimal, mais elle a un signe dollar dans la chaîne. J'ai essayé le code ci-dessous mais cela ne fonctionne pas.

BigDecimal sPrice = new BigDecimal(salePrice);

J'ai fini par obtenir cette exception ci-dessous:

Java.lang.NumberFormatException
    at Java.math.BigDecimal.<init>(Unknown Source)
    at Java.math.BigDecimal.<init>(Unknown Source)
23
JNPW

BigDecimal Constructor prend une chaîne numérique valide.

La représentation sous forme de chaîne se compose d'un signe facultatif, '+' ('\ u002B') ou '-' ('\ u002D'), suivi d'une séquence de zéro ou plusieurs chiffres décimaux ("l'entier"), éventuellement suivi d'un fraction, éventuellement suivie d'un exposant.

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

Sortie = 348.00

Vous pouvez également consulter la classe NumberFormat . En utilisant cette classe, vous pouvez définir votre Locale correspondant.

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

Sortie = 123.45

40
RanRag

Retirez d'abord le signe dollar ($).

8
Pedantic

Le constructeur requiert un nombre dans la chaîne, votre chaîne commence par un $, qui n'est pas un nombre valide. Vous devez d'abord le retirer.

3
Andrew