
Java正确地将其提升,否则会有相当多的代码是有问题的:-)
Java语言规范的5.1.2节详细介绍了这一点:
以下19个特定于原始类型的特定转换称为扩展原始转换:
byte to short, int, long, float, or doubleshort to int, long, float, or doublechar to int, long, float, or doubleint to long, float, or doublelong to float or doublefloat to double
扩展原始转换不会丢失有关数值总体大小的信息。确实,从整数类型到另一整数类型以及从float到double的转换根本不会丢失任何信息。数值将精确保留。在strictfp表达式中,从float到double的转换也精确地保留了数值。但是,这种不严格的转换可能会丢失有关转换值整体大小的信息。
将int或long值转换为float或将long值转换为double可能会导致精度损失,也就是说,结果可能会丢失该值的某些最低有效位。在这种情况下,使用IEEE
754舍入到最近模式,结果浮点值将是整数值的正确舍入版本。
从32位Java转换
int到一个
double(在Java中,具有精度50+位),将不会丢失的大小 或
任何精度。如果您使用的常数
long由于其值而被强制为a ,则 可能会 失去精度,因为a
long具有64位精度。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)