砹小翼的园子

达则兼济天下,穷则独善其身。

导航

[Java] 运算精度

0x01

Java的+、-、*、/的最低运算精度是int,所以以下代码会报错:

short s1 = 3;
short s2 = 5;
s1 = s1 + s2;

以上代码的错误原因是s1+s2的结果是int类型,不能存入short类型变量。

但如果是+=、-=、*=、/=就不会有这个问题,以下这段代码不会报错:

short s1 = 3;
short s2 = 5;
s1 += s2;

0x02

运算的最高精度跟算式中最高精度(最大存储范围)的那个量有关系:

int a = 2147483647;
System.out.print(a+2);
// 此时会输出-2147483647

因为a(int类型)和2(默认为最低精度:int类型)最高精度是int,但结果超过int(16位有符号整数)的存储范围。

而改成long就能得到符合直观的结果:

long a = 2147483647;
System.out.print(a+2);
// 此时会输出2147483649

posted on 2019-11-20 21:26  砹小翼  阅读(317)  评论(0编辑  收藏  举报