可能重复:
Compilation hangs for a class with field double d = 2.2250738585072012e-308
为什么在解析双值0.0222507385850720119e-00306
时,这个Java程序会挂起?
public class DoubleTest {
public static boolean isDoubleValue(String value) {
try {
Double.valueOf(value);
return true;
} catch (NumberFormatException e) {
return false;
}
}
public static void main(String a[]){
DoubleTest.isDoubleValue("0.0222507385850720119e-306");
System.out.println("out of hang...");
}
}
答案 0 :(得分:0)
它不适合我。以下程序在Eclipse Indigo(3.7.1)中运行良好:
class Test {
public static double isDoubleValue(String value) {
try {
double d = Double.valueOf(value);
return d;
} catch (NumberFormatException e) {
return -1;
}
}
public static void main(String a[]){
double d = Test.isDoubleValue("0.0222507385850720119e-306");
System.out.println("out of hang... " + d);
}
}
输出结果为:
out of hang... 2.2250738585072014E-308
正如所料。
我将提到-308指数正好位于允许的双值的边缘,因此它可能是您特定Java版本中的错误。但是,如上所述,它并不存在于Indigo中。