首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中将整数文本赋值给双精度变量

在Java中将整数文本赋值给双精度变量
EN

Stack Overflow用户
提问于 2012-02-09 21:38:40
回答 2查看 8.6K关注 0票数 5

如果我执行以下操作

代码语言:javascript
复制
double d = 0;

由于0是使用32位的整数字面量,而d是使用64位的双精度变量,那么剩余的32位是否会被随机垃圾填充,或者Java是否正确地提升了字面量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-09 21:43:18

Java正确地提升了它,否则会有相当大的代码体有问题:-)

Section 5.1.2 of the Java language spec对此进行了详细说明:

以下19种基元类型的特定转换称为扩展基元转换:

代码语言:javascript
复制
byte to short, int, long, float, or double
short to int, long, float, or double
char to int, long, float, or double
int to long, float, or double
long to float or double
float to double 

扩大基元转换不会丢失有关数值总体大小的信息。实际上,从整型扩展到另一整型以及从浮点型扩展到双精度类型的转换根本不会丢失任何信息;数值将被完全保留。在strictfp表达式中从浮点型扩大到双精度型的转换也会完全保留数值;但是,这种不是严格in的转换可能会丢失有关转换值的总体大小的信息。

将整型或长整型值转换为浮点型,或将长整型值转换为双精度型,可能会导致精度下降-也就是说,结果可能会丢失该值的一些最低有效位。在这种情况下,产生的浮点值将是整数值的正确舍入版本,使用IEEE 754舍入到最近的模式。

从32位Java转换为double (在Java语言中,int的精度为50+位)不会丢失量值或任何精度。如果您使用的常量由于其值而被强制转换为long,则可能会丢失精度,因为long的精度为64位。

票数 10
EN

Stack Overflow用户

发布于 2012-02-09 21:48:36

java自动将double转换为integer.ie向上转换

所以内存是由jvm自动管理的。

但它不能自动将双精度转换为整数ie.downcast。

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

https://stackoverflow.com/questions/9211874

复制
相关文章

相似问题

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