慕碼人8056858
2021-05-30 15:39:35
我在System.nanoTime()的 android 文檔中找到了以下指南由于數(shù)值溢出的可能性,應(yīng)該使用 t1 - t0 < 0,而不是 t1 < t0。我真的很好奇比較會(huì)如何導(dǎo)致溢出。據(jù)我所知,當(dāng)我們接近最高表示時(shí)會(huì)發(fā)生知識(shí)溢出,并且由此產(chǎn)生的計(jì)算結(jié)果比可以實(shí)現(xiàn)的值更高。
1 回答
繁華開(kāi)滿天機(jī)
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
我認(rèn)為溢出不會(huì)發(fā)生在比較中,而是發(fā)生在時(shí)鐘值中,每 2^63 納秒周期一次,這可能隨時(shí)發(fā)生,因?yàn)樗我夤潭ǖ脑c(diǎn)(對(duì)于給定的虛擬機(jī))
// 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));
結(jié)果是:
ts2 - ts1 > 0 : true
ts2 > ts1 : false <-- not correct
添加回答
舉報(bào)
0/150
提交
取消
