web-dev-qa-db-ja.com

文字列をBigDecimalに解析するにはどうすればよいですか?

この文字列は10,692,467,440,017.120です(金額です)。

BigDecimalに解析したいです。問題は、DecimalFormatとNumbeFormatの両方を無駄に試したことです。助けがありますか?

53
BenMansourNizar

これを試して

// Create a DecimalFormat that fits your requirements
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(',');
symbols.setDecimalSeparator('.');
String pattern = "#,##0.0#";
DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols);
decimalFormat.setParseBigDecimal(true);

// parse the string
BigDecimal bigDecimal = (BigDecimal) decimalFormat.parse("10,692,467,440,017.120");
System.out.println(bigDecimal);

I18Nサポートを使用してアプリケーションを構築する場合は、DecimalFormatSymbols(Locale)を使用する必要があります

また、decimalFormat.parseParseExceptionをスローできるため、(try/catchを使用して)処理するか、スローしてプログラムの別の部分で処理する必要があることに注意してください

64
René Link

これを試して

 String str="10,692,467,440,017.120".replaceAll(",","");
 BigDecimal bd=new BigDecimal(str);

BigDecimalは文字列コンストラクターを提供します。正規表現またはString filteredString=inString.replaceAll(",","")を介して、数値からすべてのコンマを削除する必要があります。

次に、単にBigDecimal myBigD=new BigDecimal(filteredString);を呼び出します

NumberFormatを作成して、setParseBigDecimal(true)を呼び出すこともできます。その後、parse(は、手動でフォーマットすることを心配せずにBigDecimalを提供します。

13
Andrey Akhmetov

正しいコンストラクターを試してください http://docs.Oracle.com/javase/7/docs/api/Java/math/BigDecimal.html#BigDecimal(Java.lang.String)

Stringを使用してBigDecimalを直接インスタンス化できます;)

例:

BigDecimal bigDecimalValue= new BigDecimal("0.5");
13
Rene M.