注意:
操作比较大的数时,要留意是否溢出(结果比表示范围大),尤其是对整数进行操作时
int money = 1000000000; //10亿(10亿在int的表示范围内)
int years = 20;
//返回的total是负数,因为超过了int的范围溢出了
int total = money*years;//结果是int,因为money和years都是int,算的时候因为超过了int的范围就溢出了。
System.out.println("total="+total);
//返回的total1仍然是负数。 money*years是int,再转成long。但是已经在计算 money*years已经发生了数据丢失,所以为时已晚。
long total1 = money*years;
System.out.println("total1="+total1);
//返回的total2正确:先将一个因子变成long,整个表达式发生提升,全部用long来计算结果为long,不会溢出。
long total2 = money*((long)years);
System.out.println("total2="+total2);
总结:
在计算的数据较大的时候可以提升变量类型防止溢出:
long total3=34L*1999999999;