输入字符串的 NumberFormatException:“15,7”
NumberFormatException for input string: "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);
从日志中我已经确认系统 returns "IT" 作为国家。然后像这样尝试解析:
Double nCount = new Double(m_nf.format(total_ff));
然而,这是抛出异常的地方,因为逗号被用作小数点。我错过了什么吗?谢谢!
试试这个,或者它的变体:
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
DecimalFormat format = new DecimalFormat("#.0", symbols);
Double nCount = (Double) format.parse(total_ff);
编辑:更正为根据其他人的回答进行解析!
我想你混合了 format()
和 parse()
方法。
public final String format(double number)
将一个数字作为参数,return一个字符串。
public Number parse(String source) throws ParseException
将一个字符串作为参数,return一个数字。
在您的例子中,您有一个特定语言环境格式的字符串,并且您想要检索数值。所以你应该使用 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);
}
我在尝试解析诸如“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);
从日志中我已经确认系统 returns "IT" 作为国家。然后像这样尝试解析:
Double nCount = new Double(m_nf.format(total_ff));
然而,这是抛出异常的地方,因为逗号被用作小数点。我错过了什么吗?谢谢!
试试这个,或者它的变体:
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
DecimalFormat format = new DecimalFormat("#.0", symbols);
Double nCount = (Double) format.parse(total_ff);
编辑:更正为根据其他人的回答进行解析!
我想你混合了 format()
和 parse()
方法。
public final String format(double number)
将一个数字作为参数,return一个字符串。
public Number parse(String source) throws ParseException
将一个字符串作为参数,return一个数字。
在您的例子中,您有一个特定语言环境格式的字符串,并且您想要检索数值。所以你应该使用 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);
}