2011-04-20 9 views
3

이 문자열이 있습니다 : 1303317717.65384 - 밀리 초 (65384)의 UNIX 타임 스탬프 (1303317717)입니다.Java : 밀리 초 타임 스탬프 문자열

어떻게 이것을 Java의 float로 변환 할 수 있습니까? 나는 그것을 내놓을 때마다 항상 1.06172723E9를 얻고 있지만, 나는 그것이 1303317717.65384가되기를 원한다.

감사합니다.

+0

우리가 더 잘 도와 줄 수 있도록 플로트를 어떻게 내놓고 있는지 코드를 추가하십시오. – moritz

+0

2 가지 명확한 질문이 있습니다. 1) 65384가 '밀리 초'라고 말하면 1 초에 1000ms 밖에되지 않습니다. 실제로 마이크로 초를 의미합니까? 2) 타임 스탬프에서 중요한 자릿수는 무엇입니까? 귀하의 예제 타임 스탬프는 초 단위로 10 자리 숫자를 가지고 있으며, 마이크로 초 단위로 아마 6 일 것입니다 (# 1에 대한 정답이라고 가정). Java float (IEEE 754 32 비트 부동 소수점)는 16 자리의 정밀도를 가지고 있습니다. 목표에 따라 더 많은 자릿수가 필요할 수 있습니다. – AaronD

답변

8

float 변수 내에 충분한 정밀도로 표시 할 수 없습니다. 이중을 사용해야합니다.

데모 :

System.out.println(String.format("%f", Float.parseFloat("1303317717.65384"))); 
System.out.println(String.format("%f", Double.parseDouble("1303317717.65384"))); 

자바에서

1303317760.000000 
1303317717.653840 
+0

대단히 감사합니다! :) –

+0

그래, 아니 blabla, 그냥 코드와 결과. 우수한! –

2

수레를 얻을 수는 정밀도 약 6 자리 숫자가 있습니다. 너는 두 배가 필요해.

String 형식 인 경우 Double.parseDouble(String s)을 사용할 수 있습니다.

0

부동 소수점의 정밀도가 충분하지 않습니다. 대신에 이중을 사용하십시오.