Java中的编译器在尝试解析字符串值时出乎意料地挂起,2.2250738585072012e-308加倍

时间:2011-11-01 04:03:58

标签: java

我在NetBeans 6.9.1中尝试了以下代码,它应该在控制台上显示值,但编译器出乎意料地挂断了。代码段如下。

package demo;

public class Main
{
    public static void main(String[] args) 
    {
        System.out.println("Test Demo:");
        double d = Double.parseDouble("2.2250738585072012e-308");
        //double d = Double.parseDouble("30000.2250738585072012e-308"); Works with no hangs up.
        System.out.println("Value = " + d);
    }
}

Java可能不是双倍范围的情况。如果指定的值超出范围,它应该抛出一些异常或导致一些错误,但它会挂起,而不是。究竟应该是什么原因?

1 个答案:

答案 0 :(得分:10)

这是一个已知的java compiler bug,解决方案是更新到最新的JDK(在JDK 6u24之前为现有JDK发布了patch,此修复程序包含在Sun / Oracle JDK 6u24中)。

(编辑:添加了关于修复此问题的版本的说明)