2010-12-01 2 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 비트 이유는 다음 지수

.

추가 읽기 : http://en.wikipedia.org/wiki/Double_precision_floating-point_format

최초의 64 개 비트를 얻기 위하여, 당신은 멀티 정밀 작업을 수행하는 수학 라이브러리를 시도하고 결과를 얻을 수 있습니다.

걱정하지 마십시오. 귀하의 질문에 No -1은 합리적이지만 숙제를 공부하지 않았다는 것을 보여줍니다. (또는 당신은 수업 중 잠 들었습니다.)

안녕히 계십시오.

0

BigDecimal을 시도해보십시오. 계산에 임의의 정밀도가 있습니다.

관련 문제