初学JAVA,请问这段程序为什么会提示损失精度?
本帖最后由 Myjava_peng 于 2013-01-11 18:54:40 编辑
class Da
{
public static void main(String[] args)
{
byte b = 3;
byte b1 = 3;
byte b2 = 7;
b = b1 + b2;
System.out.println(b);
}
}
教程里好像是说因为b1、b2是变量,计算机无法确定他们的值,也就不能确定进行运算,因为不知道b1+b2是否会超出byte的范围。
可那个b1 b2不是有赋值给他们了吗?3 和 7,为什么会说没办法确定b1 b2的值
如果把程序这样的话怎么就不会损失精度了?
class Da
{
public static void main(String[] args)
{
int b = 3;
int b1 = 3;
int b2 = 7;
b = b1 + b2;
System.out.println(b);
}
}
int类型也范围,难道这样就不怕b超出int的范围,损失精度吗?
------解决方案--------------------
不是这个问题,
java里两个整数做运算,比如这里的做加运算
java会默认把他们转成int类型,计算完成后,赋值个byte类型的话
由于是大类型往小类型转,所以必须强制转换,因为java是严格类型检查的语言
------解决方案--------------------byte类型的做运算,自动上升到int类型的空间做运算,所以运算结果必须是int型的,否则编译器会报错,如果你非要写byte就要强转,不过要注意 byte运算后最好不要超过byte的范围
------解决方案--------------------
嗯。可以这么理解。