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

3
为什么不能将基本类型(例如 double)转换为对象(例如 Byte)?
double x = 99;
Byte r = (Byte) x;     // Error: Cannot cast from double to Byte
System.out.println(r);
2个回答

5

Java不会隐式缩小原始值,例如从 doublebyte,因此可以通过装箱转换将其显式地强制转换为 Byte。这可防止意外精度损失。

您可以对 double 显式地强制转换为 byte(小写);然后 Java 将隐式地将 byte 装箱成 Byte。当您将原始值显式地强制转换为较窄的范围类型时,那么您告诉编译器:“是的,我知道可能会失去精度,但我仍想进行此转换。”

Byte r = (byte) x;

1
你不能将double类型转换为byte类型,因为byte类型的范围比double类型小,并且它不包含像double类型一样的小数部分。
例如:程序不知道如何将1000.5转换为byte类型。byte类型最大只能到128(我相信),而且它不能包含小数部分(如0.5)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接