有人可以在 int y = (int) x; 行中解释类型转换的工作原理吗?谢谢你
public class typecast
{
public static void main(String [] args)
{
double x=10.5;
int y=(int) x;
System.out.println("x="+x);
System.out.println("y="+y);
}
}
类型转换执行缩小类型转换。确切的转换取决于双精度值,如下所示:
int
,则向零舍入。Integer.MIN_VALUE
或Integer.MAX_VALUE
,具体取决于符号。 参考:JLS 5.1.3
注:“向零舍入”定义如下:
“Java 编程语言在将浮点值转换为整数(第 5.1.3 节)时使用向零舍入,在这种情况下,它的作用就像数字被截断一样,丢弃尾数位。向零舍入选择其结果格式的值最接近且不大于无限精确的结果。 "
在这种特殊情况下,如果您尝试使用 double(变量 x)并将其值分配给 int(变量 y),则代码将无法编译。因此,您必须明确告诉编译器将类型从 double 转换(转换)为 int。当它这样做时,在这种特殊情况下,我相信它会丢弃小数部分而不是向上/向下舍入。最后一点我可能是错的。