HOWTO · Java

Java 中的浮點數和 Double 資料型別

本文重點介紹 Java 中的 float 和 double 資料型別

本頁內容

Float 和 double 資料型別用於在 Java 中儲存實數或浮點數,但 double 資料型別比 float 更精確。double 是浮點數的預設資料型別。

精確儲存浮點數

float 是 32 位 IEEE 754 浮點,而 double 是 64 位 IEEE 754 浮點。與 double 相比,Float 的範圍較小。

在下面給出的示例中,我們有 double 資料型別的 d,它是通過將兩個 double 變數 d1 和 d2 相除而獲得的。類似地,當兩個 float 變數 f1 和 f2 相除時,我們有 f1 結果。在 double 的情況下,不需要使用字尾 d 或 D,而對於 float 型別的資料,我們需要使用字尾 f 或 F 作為預設值,所有實數數字在 Java 中被視為雙精度。

在輸出中,我們可以看到 double 變數 d 的精度和準確度高於 float 變數 f。我們知道 double 是比 float 更大的資料型別,所以我們需要向下轉換它。要將 double 型別轉換為 float,我們需要在十進位制值之前的方括號中提及 float 關鍵字。

在輸出中可以看出,通過將 double 變數轉換為 float 會丟失資料和精度,因為我們將較大的資料型別儲存到較小的資料型別中。因此,double 需要更多的記憶體來儲存雙精度浮點數並給出準確的結果。

public class Test {
  public static void main(String args[]) {
    double d1 = 10.0;
    double d2 = 3.0;
    double d = d1 / d2;
    System.out.println("double d : " + d);

    float f1 = 10.0f;
    float f2 = 3.0f;
    float f = f1 / f2;
    System.out.println("float f : " + f);

    float f3 = (float) d;
    System.out.println("float f3 : " + f3);

    double d3 = f;
    System.out.println("double d3 : " + d3);
  }
}

輸出:

double d : 3.3333333333333335
float f : 3.3333333
float f3 : 3.3333333
double d3 : 3.3333332538604736

兩種資料型別之間的差異可以用給定的表格資料來說明。

資料型別 精度 大小 Default 資料型別 預設值 字尾 包裝類 資料丟失 關鍵詞
float 單精度(6-7 位十進位制數字) 32 位 否 0.0f 使用 f 或 F。我們需要新增這個字尾,因為預設情況下浮點數顯式被視為雙精度 java.lang.Float 將 float 轉換為 double 時不會丟失資料 關鍵字 float 用於浮點型別
double 雙精度(15-16 位十進位制數字) 64 位 是 0.0d 使用 d 或 D。可選擇使用字尾 java.lang.Double 將 double 轉換為 float 時資料丟失 關鍵字 double 用於定義雙精度數

Float 和 double 用於表示實數。兩種資料型別都不精確;它們是近似型別。當我們需要準確而精確的結果時,我們應該選擇雙倍。如果有任何記憶體和空間限制,則應考慮浮點數。