Java NumberFormatException 遗留代码
Java NumberFormatException Legacy Code
我在 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
我认为这与 java 版本无关。将 comma(,)
替换为 ""
或 period(.)
例如考虑一个字符串:String str = "0000000000000000009011,00";
现在你可以试试 -
double result = Double.valueOf(str.replace(",", "."));
或
double result = Double.valueOf(str.replace(",", ""));
而是使用 NumberFormat
进行解析:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("0000000000000000009011,00");
double d = number.doubleValue();
这样您就可以 select 数字表示的正确语言环境。在上面的示例中,我使用了法国 - 他们使用逗号作为小数点。
您应该查看旧服务器上的 jvm 参数。您的语言参数实际上会将逗号更改为点,因此您不需要任何代码更改。
我在 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
我认为这与 java 版本无关。将 comma(,)
替换为 ""
或 period(.)
例如考虑一个字符串:String str = "0000000000000000009011,00";
现在你可以试试 -
double result = Double.valueOf(str.replace(",", "."));
或
double result = Double.valueOf(str.replace(",", ""));
而是使用 NumberFormat
进行解析:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("0000000000000000009011,00");
double d = number.doubleValue();
这样您就可以 select 数字表示的正确语言环境。在上面的示例中,我使用了法国 - 他们使用逗号作为小数点。
您应该查看旧服务器上的 jvm 参数。您的语言参数实际上会将逗号更改为点,因此您不需要任何代码更改。