Java 提示: 可能损失精度

来源:百度知道 编辑:UC知道 时间:2024/06/23 13:09:03
public class conversion
{
public static void main(String[] args)
{
short s=123456;
long I=s;
System.out.println(I);
}
}

一编译就提示错误,怎么回事呢,谁能给我解释一下,谢谢!

上面说的不对,这里是小转大,不存在溢出问题,只有大转小才会存在溢出问题或精度丢失问题。
这段代码根本都编译不过,在编译环境下 例如myEclipse下
short s=123456; 这句 根本编译不过
正确应该是short s = (short) 123456;
有的可以直接加后面 例如 Long s=2233L;

short是16位的,故范围是-32768--32767之间
你给的数太大了~~

由16位向64位给值,是有可能出现这个问题

这就好比把小桶里的水往大桶装当然没问题,如果你非要把大桶里的水强制倒进小桶中,如果大桶里的水过多,小桶当然就会溢出;
编程中经常遇到类型转换,你只要记住Java类型自动转换顺序就行了。

用这句话
System.out.println(Short.MAX_VALUE);
打印出Short类所能支持的最大的数;
Short是16位有符号整数类型;你还是找点资料好好整清楚Java的基本数据类型的知识吧,这是基础。

short类型没有那么长.你定义一个short给那么大的数.肯定要抛错了.