【发布时间】:2014-11-26 14:39:51
【问题描述】:
我的格式是
DecimalFormat decimalformat = new DecimalFormat("0.00##");
但我的用户是土耳其人、俄罗斯人等。他们在当地有所不同。他们使用我的应用程序。给错误看起来像这样 对于土耳其语,“10,00”
我的错误;
java.lang.NumberFormatException:Invalid Double:"10,00"
【问题讨论】:
我的格式是
DecimalFormat decimalformat = new DecimalFormat("0.00##");
但我的用户是土耳其人、俄罗斯人等。他们在当地有所不同。他们使用我的应用程序。给错误看起来像这样 对于土耳其语,“10,00”
我的错误;
java.lang.NumberFormatException:Invalid Double:"10,00"
【问题讨论】:
没有足够的信息来解析输入,但我建议你这样做:
static String parseInput(String input) throws ParseException {
DecimalFormat dFormat = new DecimalFormat("0.00##");
Number number = dFormat.parse(input);
// double numAsDouble = number.doubleValue();
return number.toString();
}
不是很好,但您也可以尝试通过替换 ',' 来解析输入:
static String parseInputByReplace(String input) throws ParseException {
DecimalFormat dFormat = new DecimalFormat("0.00##");
double number = Double.parseDouble(input.replace(',', '.'));
return dFormat.format(number);
}
【讨论】:
您应该使用用户的文化进行解析。 decimal.Parse 会这样做。如果您使用自己的文化,则意味着您明确“告诉”解析器仅使用该格式。
【讨论】: