小心分配 Java 中的長值以避免溢位\n
在 Java 中進行整數值操作時,我們需要注意整數的不足和溢位條件。考慮到 Java 中的 int 資料型別是 32 位帶符號二進位制補碼整數,其最小值為 -2,147,483,648,最大值為 2,147,483,647。如果一個值超出了最大可能值,則該值會回退到最小值並從該最小值繼續。以類似的方式,它發生在一個值小於最小值的情況下。請看以下示例。
示例
public class Tester { public static void main(String[] args) { //Scenario 1: //Assigning int value to long causing overflow long MICROSECONDS_A_DAY = 24 * 60 * 60 * 1000 * 1000; System.out.println(MICROSECONDS_A_DAY); //Scenario 2: //Assigning long value causing no overflow MICROSECONDS_A_DAY = 24L * 60 * 60 * 1000 * 1000; System.out.println(MICROSECONDS_A_DAY); } }
輸出
500654080 86400000000
需要考慮的要點
儘管我們在場景 1 中使用了長變數,但乘法運算基於 int,導致 int 溢位。因此,輸出不正確。
在場景 2 中,我們強制乘法運算基於歸屬,得到正確的結果。
廣告