2014-09-12 4 views
0

플로트로 해석하고자하는 64 비트 정수가 있습니다.Java 64 비트 정수를 부동 소수점으로 해석합니다.

4에서 4.0과 같은 것을 다시 할당하고 싶지는 않습니다.

12월 (INT) : 4백61경9천1백91조9천4백27억4천6백34만4천9백41

12월 (플로트) 6.6666000000000000

핵사 : I가 4619191942746344941을 401AAA9930BE0DED

(A)에 저장된

I는 추적을 8 바이트의 데이터를 가지고 내 자바 코드의 변수. 6.6666000000000000으로 변환하려면 어떻게해야합니까?

+0

이런 일에 접근 할 때 첫 번째 단계는 * 문서를 읽는 것입니다. –

+0

@ T.J.Crowder 그렇다면 어떤 문서를 읽어야합니까? 이미 답변을 알고있는 사람들은 어떤 javadoc을보아야하는지 알고 있습니다. 그런 사람이 아니라고 대답하는 사람은 "Java API Specification이라고하는 건초 더미가 있는데 바늘이 있는지 찾아보십시오."라고 말할 수 있습니다. – ajb

+0

@ajb : 나는 Double로 시작했고, 필요하다면 Long으로 계속했다. (물론 그것은 필요하지 않았을 것이다.) –

답변

5

사용 Double.longBitsToDouble :

class Test { 
    public static void main(String[] args) { 
    System.out.println(Double.longBitsToDouble(0x401AAA9930BE0DEDl)); 
    } 
} 

인쇄

6.6666 
4

당신은 Double.longBitsToDouble 방법으로 longdouble A와에있을 일어나는 double의 비트 표현을 변환 할 수 있습니다.

long test = 0x401aaa9930be0dedL; 
double d = Double.longBitsToDouble(test); 
System.out.println(d); 

출력 :

6.6666 

즉 당신이 정말로 필요하다면 당신은 항상 float에 결과 double을 시전 할 수 있습니다.

관련 문제