用逗号作为小数分隔符解析Double的最佳方法?

2022-08-31 06:59:13

由于逗号用作小数分隔符,此代码将引发一个 NumberFormatException

String p="1,234";
Double d=Double.valueOf(p); 
System.out.println(d);

有没有比: 更好的解析方法来获取: ?"1,234"1.234p = p.replaceAll(",",".");


答案 1

使用 java.text.NumberFormat

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234");
double d = number.doubleValue();

更新:

要支持多语言应用,请使用:

NumberFormat format = NumberFormat.getInstance(Locale.getDefault());

答案 2

您可以使用此功能(法语区域设置具有小数分隔符),

NumberFormat nf = NumberFormat.getInstance(Locale.FRANCE);
nf.parse(p);

或者,您可以使用 java.text.DecimalFormat 并设置相应的符号:

DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(',');
symbols.setGroupingSeparator(' ');
df.setDecimalFormatSymbols(symbols);
df.parse(p);

推荐