为什么不能将双值转换为Byte对象?

时间:2015-04-20 20:54:45

标签: java object casting double byte

为什么不能将原始值(例如双精度)强制转换为对象(例如,字节)?

double x = 99;
Byte r = (Byte) x;     // Error: Cannot cast from double to Byte
System.out.println(r);

2 个答案:

答案 0 :(得分:5)

Java不会隐含地缩小原始值,例如:从doublebyte,以便您可以通过装箱转换将其显式转换为Byte。这样可以防止意外丢失精确度。

您可以做的是明确地将double强制转换为byte(小写);然后Java会隐式将byte打包成Byte。当你明确地将原始值转换为更窄的范围类型时,那么你告诉编译器,&#34;是的,我意识到我可能会失去精确度,但我仍然想要这种转换。&#34; < / p>

Byte r = (byte) x;

答案 1 :(得分:1)

您不能从double转换为byte,因为该字节的范围小于double,并且它不包含像double那样的小数。

例如:程序不知道如何将1000.5转换为一个字节。一个字节的最大值为128(我相信),它不能包含小数(即.5)