java parsedouble_用逗号作为小数分隔符的parseDouble的最佳方法是什么?

问题

以下是结果: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();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值