5

我有一个需要双精度的方法,我想存储 UTC 时间,我传递给这个方法的变量很长。

我在用:

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

获取UTC时间。

这个值不能放入双精度数吗?

4

1 回答 1

14

double从可以代表任何价值的意义上说,它将“适合”,long但是对于遥远的未来(从现在起的 100,000 年)的日期来说,精度会有所下降。

双重使用的IEEE 754规范最多仅使用 53 位来表示数字的非指数部分。long由于 long 是 64 位,粗略地说,如果值超过 53 位,您可能会失去精度。

但是 53 位可以准确地表示当前纪元毫秒时间 long值,只需要 41 位。

直到纪元时间超过 2 53才会发生精度损失,直到Oct 12 287396.

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


简而言之,将纪元时间转换为double就可以了。

于 2012-11-25T23:42:15.147 回答