为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

扬帆大鱼 2019-07-01 10:16:27
用逗号作为小数分隔符解析Double的最佳方法?以下是导致Exception:String p="1,234";Double d=Double.valueOf(p); System.out.println(d);有没有更好的方法来解析"1,234"得到1.234超过:p = p.replaceAll(",",".");?
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

使用java.text.NumberFormat:

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


查看完整回答
反对 回复 2019-07-01
?
心有法竹

TA贡献1866条经验 获得超5个赞

您可以使用这个(法语地区有,十进制分隔符)

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);


查看完整回答
反对 回复 2019-07-01
?
aluckdog

TA贡献1847条经验 获得超7个赞

正如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();}


查看完整回答
反对 回复 2019-07-01
  • 3 回答
  • 0 关注
  • 645 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号