0

有人可以在 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);
 } 
}
4

2 回答 2

5

类型转换执行缩小类型转换。确切的转换取决于双精度值,如下所示:

  • 如果在数值范围内int,则向零舍入。
  • 如果它超出范围或者是“Inf”值,则转换给出Integer.MIN_VALUEInteger.MAX_VALUE,具体取决于符号。
  • 如果它是“NaN”值,则转换为零。

参考:JLS 5.1.3

注:“向零舍入”定义如下:

“Java 编程语言在将浮点值转换为整数(第 5.1.3 节)时使用向零舍入,在这种情况下,它的作用就像数字被截断一样,丢弃尾数位。向零舍入选择其结果格式的值最接近且不大于无限精确的结果。 "

于 2012-10-06T06:15:37.887 回答
0

在这种特殊情况下,如果您尝试使用 double(变量 x)并将其值分配给 int(变量 y),则代码将无法编译。因此,您必须明确告诉编译器将类型从 double 转换(转换)为 int。当它这样做时,在这种特殊情况下,我相信它会丢弃小数部分而不是向上/向下舍入。最后一点我可能是错的。

于 2012-10-06T06:12:46.213 回答