日期:2014-05-20  浏览次数:20609 次

损失精度
我才开学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型,
如楼上所说的那种方法也可以+= 复合运算都行.