7

我编写的这段代码转换doubleint获取异常。

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

这是我的代码

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

4 回答 4

11

Double是原语之上的一个包装double类。可以转换为double,但不能int直接转换为 。

如果你使用double而不是Double,它将编译:

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

您还可以double在中间添加演员表,如下所示:

int i = (int)((double)d); 
于 2012-12-30T05:24:39.023 回答
6

那是因为你不能混合拆箱(将你的转换Double为双primitive)和铸造。尝试

int i = (int)(d.doubleValue());
于 2012-12-30T05:24:21.200 回答
2

Double d = 10.9;

是你的错误。您正在使用包装类而不是数据类型。采用

double d = 10.9;
于 2012-12-30T05:24:18.980 回答
0

您不能直接将像 Double 这样的包装器转换为像 int 这样的原始类型。

你可以试试这个——

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

有关更多信息,请查看以下链接 - http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html

于 2012-12-30T06:10:11.840 回答