我想将"45,978"
解析为从*.csv
读取的两倍。现在我正在做:
double P_current = Double.parseDouble(priceList.get(j));
但是我得到了这个字符串输入的数字格式异常:
java.lang.NumberFormatException: For input string: "45,978"
我知道我可以将csv文件中的所有,
更改为可能有效的.
。但是我不希望这样,因为我需要这个文件中的逗号。有没有办法解析这个加倍as-it-is
?
感谢您的回答!
答案 0 :(得分:4)
如果您不想替换任何内容,可以Number使用NumberFormat和Locale#GERMAN:
try {
NumberFormat nf = NumberFormat.getInstance(Locale.GERMAN);
double number = nf.parse("45,978").doubleValue();
} catch(ParseException e) { }
如果您希望与区域设置无关,则只需将,
替换为.
即可获得Double#parseDouble
适用的格式。
答案 1 :(得分:3)
您应该根据您的语言区域使用相应的NumberFormat:
NumberFormat format = NumberFormat.getInstance(Locale.GERMAN);
Number number = format.parse("45,978");
double d = number.doubleValue();
答案 2 :(得分:2)
double parsed = Double.parseDouble(priceList.get(j).replace(',', '.'));
或者您也可以使用具有相应区域设置或符号的DecimalFormat。
答案 3 :(得分:2)
如果您的号码不是来自英语区域设置。将语言环境更改为正确的语言环境:
NumberFormat format = NumberFormat.getInstance(Locale.FRENCH);
Number number = format.parse("45,978");
double d = number.doubleValue();
详情请见NumberFormat
here。