web-dev-qa-db-ja.com

Javaでドル記号付きの文字列値をBigDecimalに変換するにはどうすればよいですか?

文字列形式の金額があります。例:文字列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)
23
JNPW

BigDecimalコンストラクター は、有効な数値文字列を取ります。

文字列表現は、オプションの記号、「+」(「\ u002B」)または「-」(「\ u002D」)と、それに続くゼロ個以上の10進数(「整数」)で構成されます。分数。オプションで指数が続きます。

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

40
RanRag

最初にドル記号($)を削除します。

8
Pedantic

コンストラクターには、文字列にNumberが必要です。文字列は$で始まりますが、これは有効な数値ではありません。最初にそれを取り除く必要があります。

3
Andrew