Java: 毫秒时间戳字符串转换为浮点数

5
我有这个字符串:1303317717.65384 - 它是一个带有毫秒数(65384)的UNIX时间戳(1303317717)。
如何在Java中将其转换为浮点数?当我输出它时,它总是显示1.06172723E9,但我只想让它显示1303317717.65384。
谢谢!

请添加您提供浮点数的代码,以便我们能够更好地帮助。 - moritz
我有两个澄清问题:1)您说65384是“毫秒”-一秒钟只有1000毫秒;您实际上是指微秒吗?2)您需要时间戳中的哪些有效数字?您的示例时间戳在秒钟中有10位数字,在微秒钟中有(可能)6位数字(假设这是问题1的正确答案)。Java浮点数(IEEE 754 32位浮点数)具有不到16位数字的精度。根据您的最终目标,您可能需要更多数字。 - AaronD
3个回答

10

使用浮点变量无法显示足够精度,必须使用双精度。

演示:

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

产量
1303317760.000000
1303317717.653840

2

Java中的浮点数只有大约六位数字的精度,您需要使用double。

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


0
浮点数精度不足,请使用双精度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接