2012-12-30 50 views
7

這段代碼是我寫的將double轉換成int得到一個異常。Double不是轉換爲int

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Cannot cast from Double to int 

這是我的代碼

Double d = 10.9;  
int i = (int)(d); 

回答

8

Double是原始double頂部的包裝類。它可以投射到double,但不能直接投射到int

如果使用double,而不是Double,它將編譯:

double d = 10.9;  
int i = (int)(d); 

您還可以在中間添加強制轉換爲double,像這樣:

int i = (int)((double)d); 
2

Double d = 10.9; 

是你的錯誤。您正在使用包裝類而不是數據類型。使用

double d = 10.9; 
3

那是因爲你不能混用拆箱(轉換您Double爲雙primitive)和鑄造。 嘗試

int i = (int)(d.doubleValue()); 
+0

錯字'convertig'。缺少'n'。 –

0

你不能施放包裝像Double直接到像int這樣的原始類型。

你可以試試這個 -

int i = (int)((double)d);

詳細檢查下面的鏈接 - http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html

+0

'你不能像Double一樣將包裝類型轉換爲像int這樣的原始類型.'不總是'(double)new Integer(5);'會起作用。 – BaSsGaz