2012-02-27 5 views
0

可能性の重複:
Compilation hangs for a class with field double d = 2.2250738585072012e-308ダブル値の解析中にプログラムがハングしますか?

double値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

これは、1年前にOracleによって修正されたJavaのバグです。 –

+0

どのJDKバージョンを使用していますか? – Gevorg

+0

バージョン1.6.0_26のJVMで動作します。 – Alanmars

答えて

0

私のためにハングしません。

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 

次のプログラムは、Eclipseインディゴ(3.7.1)で正常に動作します。

-308指数は許容されるdouble値の端にあるため、特定のJavaバージョンのバグである可能性があります。しかし、Indigoには存在しません。

+0

ありがとう! @paxdiablo。実際の理由は、私が使っていたjdkの問題です。(1.6.0_16) –

+0

@ selvakumar.esra、通常、最新のバグフィックスバージョンのリリースを実行してはならない魅力的な理由はありません。少なくとも1.6.0_ にアップグレードすることをお勧めします。 – paxdiablo

+0

ありがとう! @paxdiablo –

関連する問題