我有一个在Tomcat / Jboss下运行的遗留程序(java 1.4),但是,我将它复制到一个新的服务器(java 1.7),它会抛出以下异常。
java.lang.NumberFormatException: For input string: "0000000000000000009011,00"
sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
java.lang.Double.valueOf(Double.java:504)
java.lang.Double.<init>(Double.java:597)
由于我无权访问源代码,有什么办法可以解决这个问题吗?我暂时没有尝试使用java 1.4
答案 0 :(得分:0)
我认为这不是因为java版本。将comma(,)
替换为""
或period(.)
例如考虑一个字符串:String str = "0000000000000000009011,00";
现在你可以试试 -
double result = Double.valueOf(str.replace(",", "."));
或
double result = Double.valueOf(str.replace(",", ""));
答案 1 :(得分:0)
而是使用NumberFormat
进行解析:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("0000000000000000009011,00");
double d = number.doubleValue();
这样,您可以为数字表示选择正确的区域设置。在上面的例子中,我使用了法国 - 他们使用逗号作为小数点。
答案 2 :(得分:0)
您应该查看旧服务器上的jvm参数。您的语言参数会将逗号更改为实际点,因此您不需要更改任何代码。