2013-12-12 96 views
0

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.有人可以解釋System.nanoTime()的這種描述嗎?

我不知道這些值是如何不精確和邏輯背後的數值溢出。

回答

3

此方法提供納秒的精度,但不一定納秒的精度

的方法會給你納秒數,但時鐘它使用實際上可能沒有能夠跟蹤納秒。最後一位數字的一些數字可能是錯誤的。在使用這種方法的應用中,這種不準確性很好。

跨度大於約292年(263納秒)的連續調用差異由於數值溢出而無法準確計算經過時間。

2^63納秒對於long來說代表太多納秒。如果你運行你的代碼292年,那麼多的時間將會過去,Java無法表達它運行的時間。

+1

喜歡這句話,好像任何人會嘗試運行292年的程序; p – abronan

+0

感謝您的解釋。 – user1071840

+0

http://www.reddit.com/r/programming/comments/mit6j/differences_in_successive_calls_that_span_greater/ –

相關問題