首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么不能将双精度值强制转换为Byte对象?

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

Stack Overflow用户
提问于 2015-04-21 04:54:45
回答 2查看 2.3K关注 0票数 3

为什么原始值不能(例如。双精度)被投射到一个物体上(例如一个字节)?

代码语言:javascript
运行
复制
double x = 99;
Byte r = (Byte) x;     // Error: Cannot cast from double to Byte
System.out.println(r);
EN

回答 2

Stack Overflow用户

发布于 2015-04-21 04:58:07

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

您可以做的是显式地将double转换为byte (小写);然后Java会隐式地将byte封装到Byte中。当您显式地将一个原始值转换为较窄的范围类型时,您就是在告诉编译器,“是的,我知道我可能会失去精度,但无论如何我都想要这个转换。”

代码语言:javascript
运行
复制
Byte r = (byte) x;
票数 5
EN

Stack Overflow用户

发布于 2015-04-21 04:57:43

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29758217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档