亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

// 計算1!+2!+3!+4!+.....+100!

// 計算1!+2!+3!+4!+.....+100!

Chengl 2016-10-19 20:20:31
long?sum?=?0; ????????for?(int?i?=?1;?i?<=100;?i++)?{ ????????????long?item=1; ????????????for(int?j=1;j<=i;j++){ ????????????????item=item*j; ????????????} ????????????sum=sum+item; ????????} ????????System.out.println(sum);輸出結果:1005876315485501977經過分析,這個答案是錯誤的,1!+2!+3!+4!+.....+100!的結果的個位數肯定是3的,上面的代碼的邏輯的問題都沒有問題,驗算過。錯誤的地方是item變量,我把它設置為long類型,就出現了1005876315485501977這個結果,為什么不可設置成long類型?求解我把item變量設置成int類型,結果溢出,100階乘的和超過long的內存空間,采用BigInteger類去操作,輸出結果正確。不懂的就是為什么item變量類型不可以設置成long類型。朋友,解答一下。thx
查看完整描述

1 回答

已采納
?
大咪

TA貢獻785條經驗 獲得超332個贊

因為long類型最多只支持2^63-1...可惜你這個階乘中途就已經溢出了,必然會報錯,我剛才上網查了一下數據。階乘到13就已經溢出了。

13!=1932053504(錯誤)應該是?6227020800

所以,一般來說計算大數據直接用BigInteger去算就好,目前來看都可以滿足,原則上是,只要你的計算機的內存足夠大,可
以有無限位的


查看完整回答
1 反對 回復 2016-10-19
  • 大咪
    大咪
    嗯吶……求采納嘎嘎嘎賺積分
  • 1 回答
  • 1 關注
  • 2550 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號