在java中输入Casting:Integer和Double

时间:2012-10-06 05:44:31

标签: 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);
 } 
}

2 个答案:

答案 0 :(得分:5)

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

  • 如果它在int值的范围内,则将其舍入为零。
  • 如果超出范围或属于“Inf”值,则转化会根据符号提供Integer.MIN_VALUEInteger.MAX_VALUE
  • 如果是“NaN”值,则转换为零。

参考:JLS 5.1.3

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

  

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

答案 1 :(得分:0)

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