int整數相乘溢出

我們計算一天中的微秒數: 
long microsPerDay = 24 * 60 * 60 * 1000 * 1000;// 正確結果應爲:86400000000  
System.out.println(microsPerDay);// 實際上爲:500654080  
問題在於計算過程中溢出了。這個計算式完全是以int運算來執行的,並且只有在運算完成之後,其結果才被提升爲long,而此時已經太遲:計算已經溢出。 解決方法使計算表達式的第一個因子明確爲long型,這樣可以強制表達式中所有的後續計算都用long運算來完成,這樣結果就不會溢出: 
long microsPerDay = 24L * 60 * 60 * 1000 * 1000;  


發佈了63 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章