小心分配 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 中,我們強制乘法運算基於歸屬,得到正確的結果。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP