小心為 java 中的長值分配以避免溢位\n
在 Java 中對整型值進行運算時,我們需要了解 int 型別的下溢和上溢條件。鑑於在 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 中使用了一個 long 變數,但乘法運算基於 int 導致 int 上溢。因此,輸出不正確。
在場景 2 中,我們強制乘法運算基於長整型,從而得到了正確的結果。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP