为什么原始值不能(例如。双精度)被投射到一个物体上(例如一个字节)?
double x = 99;
Byte r = (Byte) x;     // Error: Cannot cast from double to Byte
System.out.println(r);发布于 2015-04-21 04:58:07
Java不会隐式地缩小原始值的范围,例如从double到byte,这样您就可以通过装箱转换显式地将其转换为Byte。这可以防止意外的精度损失。
您可以做的是显式地将double转换为byte (小写);然后Java会隐式地将byte封装到Byte中。当您显式地将一个原始值转换为较窄的范围类型时,您就是在告诉编译器,“是的,我知道我可能会失去精度,但无论如何我都想要这个转换。”
Byte r = (byte) x;发布于 2015-04-21 04:57:43
不能从双精度转换为字节,因为字节的范围比双精度小,而且它不像双精度那样包含小数。
例如:程序不知道如何将1000.5转换为一个字节。一个字节的最大值是128 (我相信),并且它不能包含小数(这是.5)
https://stackoverflow.com/questions/29758217
复制相似问题