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 参数。您的语言参数实际上会将逗号更改为点,因此您不需要任何代码更改。