将“45,978”解析为加倍值

时间:2014-01-05 10:26:33

标签: java csv

我想将"45,978"解析为从*.csv读取的两倍。现在我正在做:

double P_current = Double.parseDouble(priceList.get(j));

但是我得到了这个字符串输入的数字格式异常:

java.lang.NumberFormatException: For input string: "45,978"

我知道我可以将csv文件中的所有,更改为可能有效的.。但是我不希望这样,因为我需要这个文件中的逗号。有没有办法解析这个加倍as-it-is

感谢您的回答!

4 个答案:

答案 0 :(得分:4)

如果您不想替换任何内容,可以Number使用NumberFormatLocale#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