我有这个字符串: 10,692,467,440,017.120(是一个金额)。
我想将它解析为BigDecimal。问题在于我尝试过DecimalFormat和NumbeFormat都失败了。
我有这个字符串: 10,692,467,440,017.120(是一个金额)。
我想将它解析为BigDecimal。问题在于我尝试过DecimalFormat和NumbeFormat都失败了。
试一试
// 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)或将其抛出并让程序的另一部分来处理它。
DecimalFormat res = new DecimalFormat(); res.setDecimalFormatSymbols(symbols); res.applyLocalizedPattern(formatter);
- raisercostin试一下吧
String str="10,692,467,440,017.120".replaceAll(",","");
BigDecimal bd=new BigDecimal(str);
尝试使用正确的构造函数http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#BigDecimal(java.lang.String)
您可以直接使用字符串实例化BigDecimal ;)
示例:
BigDecimal bigDecimalValue= new BigDecimal("0.5");
1,000
,在构造转换时没有考虑逗号,因此会失败。 - Zubair AhmedBigDecimal提供了一个字符串构造函数。您需要通过正则表达式或者String filteredString=inString.replaceAll(",","")
方法从数字中去除所有逗号。
然后,您只需调用BigDecimal myBigD=new BigDecimal(filteredString);
即可。
您也可以创建一个NumberFormat
并调用setParseBigDecimal(true)
。然后使用parse()
方法将自动格式化为BigDecimal,无需手动格式化。