【发布时间】:2015-08-22 14:22:22
【问题描述】:
我正在尝试理解 Java 中的类型转换。我已经读到long 被转换为int 通过使用减少的模数int 和float 通过删除小数部分转换为int。
我尝试了以下代码。
class test
{
public static void main(String arf[])
{
System.out.println((int)2147483648.0);
System.out.println((int)2147483648L);
}
}
...其中 2147483647 是 int 的最大值。
输出是:
2147483647
-2147483648
当float 转换为int 时,它的小数部分被删除。所以,(int)2147483648.0 也应该等于-2147483648。
谁能向我解释为什么2147483648.0 被转换为2147483647?
【问题讨论】:
-
那不就是双精度类型吗?要使用浮点数,您应该将数字定义为 2147483648.0f。