第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查Java中的兩個數(shù)字是否會引起溢出?

如何檢查Java中的兩個數(shù)字是否會引起溢出?

莫回?zé)o 2019-11-12 10:57:07
我想處理將兩個數(shù)字相乘會導(dǎo)致溢出的特殊情況。代碼看起來像這樣:int a = 20;long b = 30;// if a or b are big enough, this result will silently overflowlong c = a * b;那是一個簡化的版本。在實(shí)際程序中,a并且b在運(yùn)行時從其他地方獲取。我想要實(shí)現(xiàn)的是這樣的:long c;if (a * b will overflow) {    c = Long.MAX_VALUE;} else {    c = a * b;}您如何建議我最好編寫此代碼?更新:a和b總是非負(fù)在我的情況。
查看完整描述

3 回答

?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個贊

Java的8有Math.multiplyExactMath.addExact等,為整數(shù)且長。這些會引發(fā)未經(jīng)檢查ArithmeticException的溢出。


查看完整回答
反對 回復(fù) 2019-11-12
?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個贊

您可以改用java.math.BigInteger并檢查結(jié)果的大?。ㄉ形礈y試代碼):


BigInteger bigC = BigInteger.valueOf(a) * multiply(BigInteger.valueOf(b));

if(bigC.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) > 0) {

  c = Long.MAX_VALUE;

} else {

  c = bigC.longValue()

}


查看完整回答
反對 回復(fù) 2019-11-12
  • 3 回答
  • 0 關(guān)注
  • 822 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號