2010-12-01 3 views
1
double i=Math.sqrt(2); 
double fpart=i-(long)i; 

String s=String.valueOf(fpart); 
s=s.substring(2, s.length()-1); 

Long b=Long.parseLong(s); 
System.out.println(Long.toBinaryString(b)); 

System.out.println(Long.toBinaryString(b).substring(0, 63)); 

ストリングの長さが52ビットにすぎないため、StringIndexOutOfBoundsExceptionが発生しています。しかし、私は2の平方根の小数部分の最初の64ビットが欲しい。2の平方根の小数部の最初の64ビット

答えて

4

残念ながら、重要なことは一つも忘れてしまった。

ダブルフラクションの52ビットで構成されている64ビットおよびバイナリ文字列が長いだけ52ビットである理由である次に指数

さらに読書:最初の64ビットを得るためにhttp://en.wikipedia.org/wiki/Double_precision_floating-point_format

、あなたは多倍精度演算を行い、数学ライブラリを試してみて、あなたの結果を得る可能性があります。

心配はいりません。いいえ、あなたの質問に-1は合理的ですが、それはあなたの宿題を研究しなかったことを示しています:)(またはあなたは授業中に眠っていました)。

Bye。

0

BigDecimalを試してください。計算には任意の精度があります。