Java編程中的若干良好做法 - Java Good Practices

持續更新

 

文章創建日期:2011/2/15  版本號:0.1

 

法則一:在計算大數值(結果超過10位)時直接使用 long ,計算超大數值使用 BigInterger / BigDecima

   解釋:在某些情況下,使用int型的變量來進行計算是容易溢出,如要計算商場的賬目,某貨品A,單價25000元,月均出貨400份,計算2年內14家分店的總收益,即25000*400*12*2*14=3,360,000,000。而int型變量的範圍是-2,147,483,648~2,147,483,647,所以產生了溢出,溢出結果爲-(3,360,000,000-2,147,483,647)=-1,212,516,353。

      雖然日常計算中超過10位數的數值不多見,但在Java應用較多的銀行或醫療等行業中,應多加註意。同理,int型變量使用4個字節共32位,而long型雖然大畢竟也只佔8個字節64位,也用其上限範圍,-9,223,372,036,854,775,808~9,223,372,036,854,775,807,大概是19位數字,所以一定要注意。

      另外,在某些特定的情況下,計算溢出是小,"緩衝區溢出攻擊"事大。所以,Java或者同類高級語言在進行大數值計算時一定要小心使用。

      還有就是要計算一系列int型整數後賦值給long型整數時,一定要令第一個操作數爲long型,如 70L*50....。這樣的結果纔是long型整數,否則如果先計算再賦給long型變量的話,仍舊是溢出的結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章