Java 如何设置千位分隔符并返回双精度值?
我有设置千位分隔符的代码:Java 如何设置千位分隔符并返回双精度值?,java,string,parsing,double,Java,String,Parsing,Double,我有设置千位分隔符的代码: DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US); DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols(); symbols.setGroupingSeparator(','); formatter.setDecimalFormatSymbols(symb
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(',');
formatter.setDecimalFormatSymbols(symbols);
String separator = formatter.format(20000);
问题是它返回字符串值,但我需要返回double,所以我尝试解析它:
Double.parseDouble(separator);
在此之后,我得到错误java.lang.NumberFormatException:对于输入字符串:“20000”
如何从字符串结果中返回双精度值?正如@khelwood在注释中提到的:使用
在哪一行出现该错误?您可以使用您创建的相同的
格式化程序来解析字符串<代码>格式化程序.parse(“20000”)代码>。但是,如果您使用相同的方法执行所有这些操作,那么您没有完成任何事情。您是否尝试返回指定特定格式的双精度值?因为这是不可能的。实际数字没有分隔符。只有数字的字符串或打印形式才有这样的东西。@khelwood我举了20000个例子,它将从方法参数中获取值,所以实际上我有formatter.parse(数字)代码>。它不起作用,我没有错误,但我得到的是没有逗号的完整数字。@NemJov是的,因为它是一个双精度,数字数据类型没有格式信息,因为这对处理数字没有意义。如果要以特定格式显示数字,请使用NumberFormat.format
。如果您有一个特定格式的数字的字符串表示形式,并想用它进行计算,请使用NumberFormat.parse
将其转换为数字数据类型。@NemJov您只能在字符串中加逗号,不能加双精度。你所要求的是不可能的。@NemJov,也许发布你想要工作的实际代码,这样我们就能更好地了解你真正的问题是什么
double value = formatter.parse(separator).doubleValue();