java - double 到 int 和 double 到 int

标签 java casting int double

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

这个例子是对的

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

这个例子是错误的

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

enter image description here 错误消息:Inconvertible types;cannot cast'java.lang.Double'to'int'

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

最佳答案

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

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

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

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

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

关于java - double 到 int 和 double 到 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58743651/

相关文章:

java - 如何获得两个日期之间的差异

java - 无法解析配置 ':app:debugRuntimeClasspath' 的所有文件。问题

java - 如何在Java中根据条件创建子列表

c - 如何获得 64 位乘法的整个 128 位结果

c# - Excel判断单元格的数据类型是DateTime还是Int

C++:将 int 转换为 unsigned char

java - 向多个元素字符串输出添加逗号的更好方法是什么?

c# - 找出我是否可以将值转换为特定类型的更优雅的方法

c - 如何在 C 中将 unsigned int 转换或转换为 int?

c++ - 在没有显式转换的情况下将字符显示为整数