损失精度
我才开学JAVA,昨晚遇到一个问题,byte的范围最大是到127,可是当我编写如下代码
byte a = 50;
byte b = 60;
byte c = a + b;
System.out.println(c);
的时候,却报错损失精度,c的结果110按理说没有超出范围,如果把c改成int型,或者用byte c = (byte)(a+b)则可以通过,这是为什么?敬请请不吝赐教。
------解决方案--------------------byte c = (byte) (a1 + b);
------解决方案--------------------这涉及到自动类型转换的问题
byte在相加的时候先就转化成int类型了
------解决方案--------------------byte i=1;
i=i+1;//有问题
i+=1;//ok
------解决方案--------------------byte char short 它们在运算时都会自动转化成int型,
如楼上所说的那种方法也可以+= 复合运算都行.