描述
在计算过程中如果超过数据的表达范围就会发生溢出,导致精度的流失
比如用byte类型储存一个大于128的数字是不正确的一个道理
代码展示
public static void main(String[] args) {
int num1 = 1000000000;//10亿 int的数据表示范围是20亿所以是正确的
int num2 = 20;
int result1 = num1*num2;
System.out.println("num1*num2=20000000000(正确答案20亿)");
System.out.println("经过计算机运算num1*num2="+result1);/*这里两个int类型的结果是int类型,
而结果超过了int表示的范围,所以会溢出*/
//定义一个long类型的数据储存结果是一样的
long result2 = num1 * num2;
System.out.println("long类型储存结果num1*num2="+result2);
//上面的结果还是错误的,因为两个int类型计算出来的结果首先是int型之后在转化为long类型为时已晚
//正确的做法
long result3 = num1 * (long)num2;//使用强制转换让计算完的第一结果就是long类型
System.out.println(result3);
}