为什么不能对 Byte 对象强制转换双精度值



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

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

Java 不会隐式缩小原始值的范围,例如从 doublebyte,以便您可以通过装箱转换将其显式转换为Byte。 这可以防止意外损失精度。

你可以做的是将double显式转换为byte(小写);然后Java会将byte隐式包装到Byte中。 当您将基元值显式强制转换为范围较窄的类型时,您是在告诉编译器,"是的,我知道我可能会失去精度,但无论如何我都想要这种转换。

Byte r = (byte) x;

不能从双精度转换为字节,因为字节的范围小于双精度,并且不像双精度字节那样包含小数。

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

最新更新