1.double
類型
Java 提供了double
處理實數(小數)的類型。它佔用8 bytes
內存(是類型的兩倍int
)並且可以存儲範圍從到 的值。為了比較:該類型可以存儲從到範圍內的值。-1.7*10308
+1.7*10308
int
-2*109
+2*109
在實數中,小數部分寫在小數點後。例如,123.456,或 2.5,或 100.00,或 0.01。當計算機處理這樣的數字時,我們稱它們為浮點數。
順便說一下,除了double
類型,我們還有float
類型(只有 4 個字節)。它的名字來自浮點數。這個名字double
來自double float。Adouble
是 a 的兩倍float
:8 bytes
與4
. 它也被稱為雙精度浮點數。
2.創建double
類型
雙精度類型用於存儲實數。要在代碼中創建一個可以存儲實數的變量,您需要使用如下語句:
double name;
double
類型
其中name是變量的名稱。例子:
陳述 | 描述 |
---|---|
|
price 創建一個真正的變量 |
|
weight 創建一個真正的變量 |
|
lightSpeed 創建一個真正的變量 |
與int
類型一樣,您可以使用速記同時創建多個double
變量:
double name 1, name 2, name 3;
double
變量
甚至立即為它們賦值:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
double
變量
例子:
陳述 | 筆記 |
---|---|
|
變量存儲5.0 |
|
變量存儲2.0 |
|
3.分配整數和實數
如果整數只能分配給int
變量,而實數只能分配給double
變量,那就太糟糕了。我們希望能夠在兩種數字之間進行轉換。而Java提供了這種能力。
首先,實數和整數都可以分配給double
變量。分配整數時,只需將它們轉換為實數。當然,在此過程中可能會損失一些準確性。
陳述 | 筆記 |
---|---|
|
變量存儲5.0 |
|
變量存儲2.0 |
|
變量 x 存儲1000000.0 |
其次,如果某個表達式中涉及整數和實數,則先將整數轉換為實數,然後再與另一個實數進行運算。
陳述 | 筆記 |
---|---|
|
變量 x 存儲5000.0 |
|
號碼10 會顯示在屏幕上 |
|
號碼10.0 會顯示在屏幕上 |
最後,還可以將實數分配給int
變量。當我們這樣做時,實數的小數部分被丟棄——數字被向下舍入到最接近的整數。
此外,編譯器要求程序員明確記錄正在發生的事情(以確保其他程序員理解小數部分被丟棄)。一般來說,這樣的轉換在代碼中看起來像這樣:
integer_variable = (int)(real_number);
int
變量
例子:
陳述 | 筆記 |
---|---|
|
變量x 存儲5 |
|
變量x 存儲5 |
|
變量x 存儲11 |
4. Java 整數與實數相除
當一個整數除以一個整數時,總是捨棄餘數。那我們怎麼除以5
得到2
呢2.5
?
乍一看,正確的選擇似乎是:
double d = 5 / 2;
但這不是那麼簡單。這裡的問題是 Java 機器首先計算 的值5 / 2
,然後才將結果賦值給d
變量。並且5 / 2
操作是整數除法。這意味著d
將包含2
,或者更準確地說,2.0
正確的解決方法是至少把除法中涉及的一個數寫成實數(即帶小數點):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
在每個表達式中,d
將包含2.5
但是如果我們使用變量呢?如果我們有這樣的代碼怎麼辦?:
int a = 5;
int b = 2;
double d = a / b;
這裡有一個巧妙(且明顯)的解決方案——強制 Java 機器將變量轉換為實數,方法是將變量乘以一個實數 ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
請注意,乘法和除法具有相同的優先級,並且從左到右執行。這意味著我們在哪裡乘以 1.0 很重要。
例子:
陳述 | 執行順序 | 結果 |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION