java中的类型转换:Integer和Double

Mic*_*ell 0 java casting

有人可以解释类型转换如何在行中运行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);
 } 
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 5

类型转换执行缩小类型转换.确切的转换取决于double值,如下所示:

  • 如果它在int值的范围内,则将其舍入为零.
  • 如果它超出范围或是"Inf"值,则转换给出Integer.MIN_VALUEInteger.MAX_VALUE取决于符号.
  • 如果它是"NaN"值,则转换为零.

参考:JLS 5.1.3

注意:"向零舍入"定义如下:

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