我在试图解析诸如" 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);
编辑:根据别人的答案纠正解析!