Java的UTC时间能否适应于double类型?

5

我有一个方法需要一个double类型的参数,而我想要存储UTC时间,但我传递给该方法的变量是一个long类型。

我正在使用:

Date now = new Date();
now.getTime() 

获取UTC时间。

这个值是否不能适应double类型?


我建议你了解一下Java的原始数据类型(以及数据类型的一般知识)。http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html - leflings
1个回答

14

对于 double 类型, 任何 long 值都可以被“容纳”,但是对于遥远的未来(距离现在数十万年之后)的日期,会有精度损失。

IEEE 754 规范,即 double 使用的规范,最多只使用 53 位表示数字的非指数部分。由于 long 是 64 位,粗略地说,如果 long 值超过 53 位,则可能会丢失精度。

然而,53 位足以准确表示当前的时期毫秒时间 long 值,仅需要 41 位即可。

只有当时期时间超过 253 时才会发生精度损失,这将不会发生直到 Oct 12 287396

即使在最坏的情况下,“不准确”的 11 位仍将转换为精度约为±1秒的时间值 (2 ^ 11 = 2048,以毫秒为单位的范围为 2 秒)。


简而言之,将时期时间转换为double类型是可以的。


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