java utc时间是否可以放在双精度内?

java utc时间是否可以放在双精度内?,java,utc,Java,Utc,我有一个方法需要一个double,我想存储UTC时间,我传递给这个方法的变量是一个long 我正在使用: Date now = new Date(); now.getTime() 获取UTC时间 这个值是否可以不放入一个双精度值?它将“适合”,即double可以表示任何长的值,但在遥远的将来(从现在起10万年)的日期将失去精度 双重使用的规范最多只使用53位作为数字的非指数部分。由于long是64位,粗略地说,如果long值超过53位,可能会丢失精度 但是,53位可以准确表示当前long值,

我有一个方法需要一个double,我想存储UTC时间,我传递给这个方法的变量是一个long

我正在使用:

Date now = new Date();
now.getTime() 
获取UTC时间

这个值是否可以不放入一个双精度值?

它将“适合”,即
double
可以表示任何
长的
值,但在遥远的将来(从现在起10万年)的日期将失去精度

双重使用的规范最多只使用53位作为数字的非指数部分。由于long是64位,粗略地说,如果
long
值超过53位,可能会丢失精度

但是,53位可以准确表示当前
long
值,它只需要41位

在历元时间超过253之前不会发生精度损失,而在10月12日287396之前不会发生精度损失

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



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

我建议您仔细阅读Java的基本数据类型(通常是数据类型)。