HOWTO · Java

在 Java 中將 Double 轉換為 Int

這篇文章介紹瞭如何在 Java 中將 double 轉換為 int。

本頁內容

在 Java 中將 double 轉換為 int:若要朝零截斷,請使用 (int) value;若要取最接近的整數,請使用 (int) Math.round(value);若值是 Double 物件,則可呼叫 value.intValue()。例如,12.9 經型別轉換或 intValue() 會得到 12,經四捨五入後再轉換則會得到 13。

請依照所需行為選擇方法:型別轉換最適合截斷,Math.round() 會將值取至鄰近整數,而 Double.intValue() 適合已經持有包裝類別物件的情況。以下範例中每種方法最後都會得到 int;不過,Math.round() 本身會先回傳 long,再透過明確的型別轉換取得 int。

在 Java 中使用型別轉換將 double 轉換為 int

型別轉換會將原始型別 double 轉為原始型別 int。Java 會朝零截斷小數部分,不會向下取整。例如,12.9 會變成 12。由於 int 無法保留小數部分,轉換也可能造成資訊損失。若想了解擴大轉換與縮小轉換的差異,請參閱 Java 型別轉換指南。

語法為 (int) doubleValue。以下是完整範例,可存成 DoubleToIntConversion.java 後執行:

執行此範例:

public class DoubleToIntConversion {
    public static void main(String[] args) {
        double value = 12.9;
        int result = (int) value;
        System.out.println("double: " + value);
        System.out.println("int: " + result);
    }
}

提供的執行結果顯示,此範例的 int 結果為 12。無論數值在零的哪一側,轉換都會朝零截斷;例如,-12.9 會變成 -12,而不是 -13。

在 Java 中使用 round() 方法將 double 轉換為 int

若要取得最接近的整數,而非截斷小數,請使用 Math.round()。傳入 double 引數時,Math.round() 會回傳 long;若目標型別是 int,請明確轉換其結果:(int) Math.round(value)。例如,12.9 會四捨五入為 13,而 12.3 會得到 12。

轉換為 int 時也要考慮其可表示範圍。如果四捨五入後的 long 超出 int 範圍,轉成 int 不會回報錯誤,結果會依照 Java 的縮小轉換規則處理。如果完整結果可能超出 int 的範圍,請將值保留為 long。

以下是完整範例,可存成 RoundDoubleToInt.java 後執行:

public class RoundDoubleToInt {
    public static void main(String[] args) {
        double value = 12.9;
        long rounded = Math.round(value);
        int result = (int) rounded;
        System.out.println("double: " + value);
        System.out.println("rounded long: " + rounded);
        System.out.println("int: " + result);
    }
}

提供的執行結果顯示,Math.round() 會產生 13L,接著轉換為 int 值 13。

在 Java 中使用 intValue() 方法將 double 轉換為 int

intValue() 是 Double 包裝類別的實例方法,不屬於原始型別 double。請對 Double 物件呼叫此方法以取得 int。和原始型別轉換一樣,它會朝零截斷,不會四捨五入;因此,值為 12.9 的 Double 會得到 12。

語法為 wrapper.intValue()。如以下範例所示,指定值時,Java 可以將原始型別 double 自動裝箱為 Double。請將這個完整程式存成 DoubleWrapperToInt.java:

public class DoubleWrapperToInt {
    public static void main(String[] args) {
        Double value = 12.9;
        int result = value.intValue();
        System.out.println("Double: " + value);
        System.out.println("int: " + result);
    }
}

提供的執行結果顯示,Double.intValue() 將 12.9 轉換為 12。

如果接下來要解析文字,而不是轉換既有數值,請參閱如何在 Java 中將十六進位字串轉換為 int。