2012-10-06 52 views
0

有人可以解释类型转换是如何工作的:int y =(int)x; 谢谢java中的类型转换:Integer和Double

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); 
} 
} 
+1

您是否尝试打印'y'的值。你得到了什么??你不明白的是什么? –

+0

你能解释一下在这两行中你觉得神秘吗? – user1406062

回答

5

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

  • 如果它在int值的范围内,则会向零调整。
  • 如果超出范围或是“Inf”值,则转换根据符号给出Integer.MIN_VALUEInteger.MAX_VALUE
  • 如果它是“NaN”值,则转换为零。

参考:JLS 5.1.3

注:“圆形向零”被定义为如下:

“Java编程语言朝向零的浮点值转换为整数(当使用圆§5.1.3),在这种情况下,它的作用就像截断数字一样,舍弃尾数位。舍入到零时,其结果选择格式的值最接近数值而不超过无限精度的结果

+0

更详细的描述给你。谢谢斯蒂芬,我只是懒得去查看规格,并把它放到更技术更清洁的地方。 – Drizzt321

0

在这种特殊情况下,如果你尝试采取双重(变量x),并为其分配的价值为int(变量y)的代码将无法编译。所以你必须明确告诉编译器将类型从double转换为int。当它这样做时,在这种特殊情况下,我相信它会减少小数部分而不是四舍五入。我最后一点可能是错的。

相关问题