如何将String解析为BigDecimal?

Ben*_*zar 57 java string parsing bigdecimal decimalformat

我有这个字符串:10,692,467,440,017.120(这是一个金额).

我想将它解析为BigDecimal.问题是我尝试了DecimalFormat和NumbeFormat都是徒劳的.有帮助吗?

Ren*_*ink 67

试试这个

// 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);
Run Code Online (Sandbox Code Playgroud)

如果您正在构建具有I18N支持的应用程序,则应使用 DecimalFormatSymbols(Locale)

还要记住,decimalFormat.parse可以抛出一个ParseException所以你需要处理它(使用try/catch)或抛出它并让程序的另一部分处理它


Ruc*_*era 24

试试这个

 String str="10,692,467,440,017.120".replaceAll(",","");
 BigDecimal bd=new BigDecimal(str);
Run Code Online (Sandbox Code Playgroud)


Ren*_* M. 15

尝试正确的构造函数 http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#BigDecimal(java.lang.String)

您可以直接使用String实现BigDecimal;)

例:

BigDecimal bigDecimalValue= new BigDecimal("0.5");
Run Code Online (Sandbox Code Playgroud)


ζ--*_*ζ-- 13

BigDecimal提供了一个字符串构造函数.你需要通过正则表达式或者删除数字中的所有逗号String filteredString=inString.replaceAll(",","").

然后你只需打电话 BigDecimal myBigD=new BigDecimal(filteredString);

您也可以创建NumberFormat并调用setParseBigDecimal(true).然后parse(会给你一个BigDecimal而不用担心手动格式化.