我在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可能不是双倍范围的情况。如果指定的值超出范围,它应该抛出一些异常或导致一些错误,但它会挂起,而不是。究竟应该是什么原因?
答案 0 :(得分:10)
这是一个已知的java compiler bug,解决方案是更新到最新的JDK(在JDK 6u24之前为现有JDK发布了patch,此修复程序包含在Sun / Oracle JDK 6u24中)。
(编辑:添加了关于修复此问题的版本的说明)