有人可以解释System.nanoTime()的这种描述吗?

时间:2013-12-12 15:56:54

标签: java time nanotime

This method provides nanosecond precision, but not necessarily nanosecond accuracy. No guarantees are made about how frequently values change. Differences in successive calls that span greater than approximately 292 years (263 nanoseconds) will not accurately compute elapsed time due to numerical overflow.

我不确定数值溢出背后的值是不精确和逻辑的。

1 个答案:

答案 0 :(得分:3)

  

此方法提供纳秒精度,但不一定是纳秒精度

该方法将以纳秒为单位给出一个数字,但它使用的时钟实际上可能无法跟踪纳秒。一些最后的数字可能是错误的。在使用此方法的应用程序中,这种不准确性很好。

  

跨越大于约292年(263纳秒)的连续调用的差异将无法准确计算由于数值溢出而导致的经过时间。

2 ^ 63纳秒是long表示的太多纳秒。如果你运行你的代码292年,那么Java将无法表达它运行了多长时间。