60

私はこの文字列を持っています: 10,692,467,440,017.120 (これは金額です)。

BigDecimal に解析したい。問題は、DecimalFormat と NumbeFormat の両方を無駄に試したことです。

4

4 に答える 4

79

これを試して

// 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.parseがスローされる可能性があるParseExceptionため、(try/catch を使用して) 処理するか、スローしてプログラムの別の部分で処理させる必要があることに注意してください。

于 2013-08-14T12:36:33.203 に答える
27

これを試して

 String str="10,692,467,440,017.120".replaceAll(",","");
 BigDecimal bd=new BigDecimal(str);
于 2013-08-14T12:36:15.587 に答える
16

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

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

例:

BigDecimal bigDecimalValue= new BigDecimal("0.5");
于 2013-08-14T12:35:15.730 に答える
13

BigDecimal は文字列コンストラクターを提供します。正規表現またはString filteredString=inString.replaceAll(",","").

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

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

于 2013-08-14T12:33:12.627 に答える