我有这个字符串:10,692,467,440,017.120(这是金额)。
我想将它解析为BigDecimal。 问题是我尝试了DecimalFormat和NumbeFormat都是徒劳的。 有什么帮助吗?
答案 0 :(得分:64)
试试这个
// 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)或抛出它并让程序的另一部分处理它
答案 1 :(得分:24)
试试这个
String str="10,692,467,440,017.120".replaceAll(",","");
BigDecimal bd=new BigDecimal(str);
答案 2 :(得分:13)
BigDecimal提供了一个字符串构造函数。您需要通过正则表达式或String filteredString=inString.replaceAll(",","")
从数字中删除所有逗号。
然后,您只需致电BigDecimal myBigD=new BigDecimal(filteredString);
您还可以创建NumberFormat
并致电setParseBigDecimal(true)
。然后parse(
会给你一个BigDecimal而不用担心手动格式化。
答案 3 :(得分:13)
尝试正确的构造函数 http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#BigDecimal(java.lang.String)
您可以直接使用String实现BigDecimal;)
示例:
BigDecimal bigDecimalValue= new BigDecimal("0.5");