问题
以下是结果:aException:
String p="1,234";
Double d=Double.valueOf(p);
System.out.println(d);
是否有更好的方法解析"1,234"到get1.234than:p = p.replaceAll(",",".");?
#1 热门回答(163 赞)
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234");
double d = number.doubleValue();
#2 热门回答(53 赞)
你可以使用此(法语区域设置has,for decimal decimal)
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);
#3 热门回答(16 赞)
正如E-Riz指出的那样,NumberFormat.parse(String)将"1,23abc"解析为1.23。要获取整个输入,我们可以使用:
public double parseDecimal(String input) throws ParseException{
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.getDefault());
ParsePosition parsePosition = new ParsePosition(0);
Number number = numberFormat.parse(input, parsePosition);
if(parsePosition.getIndex() != input.length()){
throw new ParseException("Invalid input", parsePosition.getIndex());
}
return number.doubleValue();
}