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

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

以下是导致Exception:

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

有没有更好的方法来解析"1,234"得到1.234超过:p = p.replaceAll(",",".");?


扬帆大鱼
浏览 646回答 3
3回答

守着星空守着你

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

心有法竹

您可以使用这个(法语地区有,十进制分隔符)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);

aluckdog

正如E-Riz所指出的,NumberFormat.Analysis(String)将“1,23 abc”解析为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();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java