class operation
{
public static void main(string[] argc)
{
byte a = 3;
byte b1 = 7;
byte b2 = 10;
a = b1 + b2;
system.out.println(a);
}
}
这时就会报精度丢失问题:
test.java:10: 错误: 不兼容的类型: 从int转换到byte可能会有损失
a = b1 + b2;
^
原因是什么?
首先对于变量a的赋值为3,这是把一个int类型的强行转换后的结果,显然这时的精度是丢失了的。(int是32位二进制数,byte是8位二进制数,转换时是只要最后八位,其他位不要)
而再对变量a进行操作时,a = b1+b2;这时的b1,b1都时变量,编译器不能确定具体的位数大小,这时就会报精度有可能会丢失。
想象一下当b1或b2有一个位127时,随便加上一个数,那肯定就会溢出,精度丢失。