1.double類型

Java 提供了double處理實數(小數)的類型。它佔用8 bytes內存(是類型的兩倍int)並且可以存儲範圍從到 的值。為了比較:該類型可以存儲從到範圍內的值。-1.7*10308+1.7*10308int-2*109+2*109

在實數中,小數部分寫在小數點後。例如,123.456,或 2.5,或 100.00,或 0.01。當計算機處理這樣的數字時,我們稱它們為浮點數

順便說一下,除了double類型,我們還有float類型(只有 4 個字節)。它的名字來自浮點數。這個名字double來自double float。Adouble是 a 的兩倍float8 bytes4. 它也被稱為雙精度浮點數


2.創建double類型

雙精度類型用於存儲實數。要在代碼中創建一個可以存儲實數的變量,您需要使用如下語句:

double name;
創建double類型

其中name是變量的名稱。例子:

陳述 描述
double price;
price創建一個真正的變量
double weight;
weight創建一個真正的變量
double lightSpeed;
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變量

例子:

陳述 筆記
double price = 5.0;
變量存儲5.0
double weight = 2;
變量存儲2.0
double x = 1.0, y = 2.0, z = 3.0;

3.分配整數和實數

如果整數只能分配給int變量,而實數只能分配給double變量,那就太糟糕了。我們希望能夠在兩種數字之間進行轉換。而Java提供了這種能力。

首先,實數和整數都可以分配給double變量。分配整數時,只需將它們轉換為實數。當然,在此過程中可能會損失一些準確性。

陳述 筆記
double price = 5.0;
變量存儲5.0
double weight = 2;
變量存儲2.0
int t = 1000;
double x =  t * t;

變量x存儲1000000.0

其次,如果某個表達式中涉及整數和實數,則先將整數轉換為實數,然後再與另一個實數進行運算。

陳述 筆記
int t = 1000;
double x = t * 5.0;

變量x存儲5000.0
System.out.println(5 * 2);
號碼10會顯示在屏幕上
System.out.println(5 * 2.0);
號碼10.0會顯示在屏幕上

最後,還可以將實數分配給int變量。當我們這樣做時,實數的小數部分被丟棄——數字被向下舍入到最接近的整數。

此外,編譯器要求程序員明確記錄正在發生的事情(以確保其他程序員理解小數部分被丟棄)。一般來說,這樣的轉換在代碼中看起來像這樣:

integer_variable = (int)(real_number);
將實數分配給int變量

例子:

陳述 筆記
int x = (int)(5.5);
變量x存儲5
double a = 5.999;
int x = (int)(a);
變量x存儲5
double a = 5.999;
int b = 2;
int x = (int)(a * b);
變量x存儲11


4. Java 整數與實數相除

當一個整數除以一個整數時,總是捨棄餘數。那我們怎麼除以5得到22.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 很重要。

例子:

陳述 執行順序 結果
int a = 5;
int b = 2;
double d = 1.0 * a / b;
(1.0 * a) / b; 2.5
int a = 5;
int b = 2;
double d = a * 1.0 / b;
(a * 1.0) / b; 2.5
int a = 5;
int b = 2;
double d = a / b * 1.0;
(a / b) * 1.0; 2.0