首页 > 解决方案 > 加倍到 int 和加倍到 int

问题描述

我想知道Double在我的示例中反转为 int 时发生了什么?

这个案子是对的

Double d = 123.13;
int i = (int)(Math.random()*d);

这个案子是错误的

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

在此处输入图像描述 错误信息:Inconvertible types;cannot cast'java.lang.Double'to'int'

我知道我可以d.intValue用来做这个,但我只想知道上面两种情况有什么区别

标签: javacastingintdouble

解决方案


包装器类型只能转换为它包装的原始类型。

即您可以将 aDouble转换为 a double,但不能直接转换为 a int

第二个片段可以通过编译:

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

在第一个片段中,您将一个基元(的类型为Math.random()*dis double)转换为一个int,这是允许的。


推荐阅读