public class TestEmployee {
public static void main(String args[]) {
byte b=(byte)1*200;
System.out.println(b);
}
}
我上面写的是简单的代码。但我得到了下面的错误“可能会失去精确度”
据我所知,当我们执行整数计算时,操作数将转换为int,然后执行计算。最终结果是int。现在,当字节数据类型的范围是(-128到127)时,上述计算超出了字节范围。所以我把它转发到字节。那我为什么得到错误。
请帮助并纠正我的铸造概念..
答案 0 :(得分:4)
您正在将1
转换为一个字节,而不是1*200
的结果。所以你想使用
byte b = (byte)(1*200);
在这种情况下。
答案 1 :(得分:1)
你的代码应该是这样的....只是在乘法运算之前缺少括号,否则只有1将是向下转换而200仍然是整数
public class TestEmployee {
public static void main(String args[])
{ byte b=(byte) ( 1 * 200);
System.out.println(b);
}
}
答案 2 :(得分:0)
在向下转发时,您缺少括号()
像这样改变,
byte b=(byte)(1*200);
当你这样写时,
byte b=(byte)1*200;
^
`compilation error : possible loss of precision`
这是因为它试图将int : 200
转换为导致编译错误的字节。
答案 3 :(得分:0)
您尚未将1 * 200
放入括号中。它应该是byte b = (byte)(1 * 200).
否则你执行byte b = 200
这是一个int并且你得到一个错误。