猿问

使用 System.nanoTime() 时比较如何导致数值溢出

我在System.nanoTime()的 android 文档中找到了以下指南

由于数值溢出的可能性,应该使用 t1 - t0 < 0,而不是 t1 < t0。

我真的很好奇比较会如何导致溢出。据我所知,当我们接近最高表示时会发生知识溢出,并且由此产生的计算结果比可以实现的值更高。


慕码人8056858
浏览 273回答 1
1回答

繁华开满天机

我认为溢出不会发生在比较中,而是发生在时钟值中,每 2^63 纳秒周期一次,这可能随时发生,因为它任意固定的原点(对于给定的虚拟机)// say the clock value happens to be Long.MAX_VALUE - 10long ts1 = 9223372036854775797L;// 100 ns later it has overflowed (it is now negative)long ts2 = ts1 + 100;System.out.println("ts2 - ts1 > 0 : " + (ts2 - ts1 > 0));System.out.println("ts2 > ts1 : " + (ts2 > ts1));结果是:ts2 - ts1 > 0 : truets2 > ts1 : false&nbsp; <-- not correct
随时随地看视频慕课网APP

相关分类

Java
我要回答