java中的类型转换:整数和双精度

java中的类型转换:整数和双精度,java,casting,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); } } 在这种特殊情况下,如果尝试获取double(变量x)并将其值赋给int(变量y)

有人能解释一下在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);
 } 
}

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

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

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

  • 如果它在
    int
    值的范围内,则向零舍入
  • 如果超出范围或为“Inf”值,则转换将根据符号给出
    整数.MIN_值
    整数.MAX_值
  • 如果是“NaN”值,则转换为零
参考:

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

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


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

  • 如果它在
    int
    值的范围内,则向零舍入
  • 如果超出范围或为“Inf”值,则转换将根据符号给出
    整数.MIN_值
    整数.MAX_值
  • 如果是“NaN”值,则转换为零
参考:

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

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


您是否尝试打印
y
的值。你得到了什么??还有什么你不明白的?你能解释一下你在这两行中发现的神秘之处吗?你试过打印
y
的值吗。你得到了什么??还有什么你不明白的?你能解释一下你在这两行中发现的神秘之处吗?更详细的描述。谢谢Stephen,我只是懒得去查阅说明书,把它放到更技术、更干净的地方。更详细的描述给你。谢谢Stephen,我只是太懒了,没有去查说明书,把它放到更技术、更干净的地方。