我在System.nanoTime()的 android 文档中找到了以下指南由于数值溢出的可能性,应该使用 t1 - t0 < 0,而不是 t1 < t0。我真的很好奇比较会如何导致溢出。据我所知,当我们接近最高表示时会发生知识溢出,并且由此产生的计算结果比可以实现的值更高。
1 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
我认为溢出不会发生在比较中,而是发生在时钟值中,每 2^63 纳秒周期一次,这可能随时发生,因为它任意固定的原点(对于给定的虚拟机)
// say the clock value happens to be Long.MAX_VALUE - 10
long 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 : true
ts2 > ts1 : false <-- not correct
添加回答
举报
0/150
提交
取消