损失精度

Coveny 2007-09-12 09:14:19
我才开学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)则可以通过,这是为什么?敬请请不吝赐教。
...全文
103 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
javafreshfish 2007-09-12
  • 打赏
  • 举报
回复
byte char short 它们在运算时都会自动转化成int型,
如楼上所说的那种方法也可以+= 复合运算都行.
grass_12 2007-09-12
  • 打赏
  • 举报
回复
byte i=1;
i=i+1;//有问题
i+=1;//ok
伍子V5 2007-09-12
  • 打赏
  • 举报
回复
这涉及到自动类型转换的问题
byte在相加的时候先就转化成int类型了
malligator 2007-09-12
  • 打赏
  • 举报
回复
byte c = (byte) (a1 + b);

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧