2011-04-20 46 views
3

我有这个字符串:1303317717.65384 - 这是一个毫秒(65384)的UNIX时间戳(1303317717)。Java:毫秒时间戳字符串浮点数

我该如何将它转换为Java中的float?我总是在获得1.06172723E9时,但我只希望它是1303317717.65384。

谢谢!

+0

添加代码你如何给出漂浮,所以我们可以帮助更好 – moritz 2011-04-20 16:52:28

+0

我有两个澄清问题:1)你说65384是'毫秒' - 一秒钟只有1000毫秒;你的意思是微秒吗? 2)你需要从时间戳得到什么有效数字?您的示例时间戳在秒内有10位数字,并且(可能)在微秒内有6位数(假设这是#1的正确答案)。 Java浮点数(IEEE 754 32位浮点数)的精度略低于16位。根据您的最终目标,您可能需要更多数字。 – AaronD 2011-04-20 16:53:45

回答

8

不可能在浮点变量中以足够的精度显示这个 - 你必须使用double。

演示:

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

非常感谢! :) – 2011-04-20 17:17:41

+0

是的,没有blabla,只是代码和结果。优秀! – 2015-12-02 20:17:11

2

浮动在Java中只有约六位数字的精度。你需要一个双。

如果它是以字符串的形式,那么您可以使用Double.parseDouble(String s)

0

浮点精度不够。改为使用双。

相关问题