数字格式输入字符串的异常:"15,7"



我在试图解析诸如" 15,7"之类的数字时会得到一个numberFormateXception。这将是美国或英国格式的" 15.7"。我试图根据以下内容从PC中检索该语言环境并解析。

if (strCountry.equals("IT")) {
    locale = java.util.Locale.ITALIAN;
} else {
    locale = java.util.Locale.ENGLISH;
}
NumberFormat m_nf = NumberFormat.getInstance(locale);
m_nf.setMaximumFractionDigits(1);

通过记录,我已经确认该系统将" IT"返回为国家。然后尝试解析:

Double nCount = new Double(m_nf.format(total_ff));

然而,由于逗号被用作小数点,这是抛出异常的地方。我错过了什么吗?谢谢!

我认为您混合了format()parse()方法。

public final String format(double number) 

将参数作为一个数字并返回字符串。

public Number parse(String source) throws ParseException 

以参数为字符串并返回一个数字。

在您的情况下,您的字符串具有特定的语言环境格式,并且要检索数字值。因此,您应该使用parse()而不是format()

这是一个示例:

public static void main(String[] args) throws ParseException {
  Locale locale = java.util.Locale.ITALIAN;
  String valueString = "15,7";
  NumberFormat m_nf = NumberFormat.getInstance(locale);
  m_nf.setMaximumFractionDigits(1);
  Double number = (Double) m_nf.parse(valueString);
}

尝试一下或其变体:

DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
DecimalFormat format = new DecimalFormat("#.0", symbols);
Double nCount = (Double) format.parse(total_ff);

编辑:根据别人的答案纠正解析!

相关内容

  • 没有找到相关文章

最新更新