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。