我无法将String s="45,333"
转换为long或double数字。任何人都可以帮我解决这个问题..我添加了模型片段,当我尝试运行该代码时显示NumberFormatException
..
public static void main(String args[])
{
long a=85200;
NumberFormat numberFormat=NumberFormat.getNumberInstance();
String s=numberFormat.format(a);
Long l=Long.parseLong(s.toString());
System.out.println("The value:"+s);
System.out.println("The value of long:"+l);
}
答案 0 :(得分:14)
考虑NumberFormat.parse()
方法,而不是Long.parseLong()
。
Long.parseLong()
期望String
内部没有任何格式符号。
答案 1 :(得分:3)
混合NumberFormat
和Long.parseLong()
不是一个好主意。
NumberFormat
可以是区域设置感知的(在您的示例中它使用您的计算机的默认区域设置),或者您可以显式指定格式模式,而parseXXX()
仅Number
子类的方法读“普通”数字(可选减号+数字)。
如果您使用NumberFormat
对其进行格式化,则应使用NumberFormat.parse()
对其进行解析。但是,您不应该依赖于默认语言环境,而是尝试指定一个(或使用带有模式的DecimalFormat
)。否则你可能会遇到一些令人讨厌且难以发现的错误。
如果您不关心格式,请考虑使用Long.toString()
将长值转换为字符串,并使用Long.parseLong()
将其转换回来。它更容易使用,线程安全(与NumberFormat
不同)并且在任何地方都可以使用。
答案 2 :(得分:2)
正如所指出的,您可以像这样使用NumberFormat.parse()
:
public static void main(String args[]) {
long a=85200;
NumberFormat numberFormat=NumberFormat.getNumberInstance();
String s=numberFormat.format(a);
Long l;
try {
l = numberFormat.parse(s.toString()).longValue();
} catch (ParseException ex) {
l = 0L;
// Handle exception
}
System.out.println("The value:"+s);
System.out.println("The value of long:"+l);
}
答案 3 :(得分:-1)
long l = Long.valueOf(s);
System.out.println("The value of long:"+l);