Java中为什么long能自动转换成float类型

作为常识我们都知道,float型在内存中占用的是4个字节,而long型占用8个字节。

单从字节数来看,long型是大于float型的。但实际上,float表示的范围却是比long要大的


float类型的范围:-2^128 ~ 2^128,也即**-3.40E+38 ~ +3.40E+38**

额外补充:double类型的范围:-2^1024 ~ 2^1024 , 也即**-1.79E+308 ~ +1.79E+308**。”

long类型的范围是:-263~263-1 大概是 -9.223E18~ 9.223E18


解释为什么float类型的范围是E的38次


这就不得不提浮点数的存储方式:由符号位指数位尾数位三部分组成

  • 符号位(Sign) : 0代表正,1代表为负

  • 指数位(Exponent):用于存储科学计数法中的指数数据,*并且要加上偏移量(float偏移127,double偏移量1023)*

  • 尾数部分(Mantissa):尾数部分


    在这里插入图片描述

取值部分主要看指数部分:float的指数部分有8bit(2^8),由于是有符号型,所以得到对应的指数范围-128~128。

由于float的指数部分对应的指数范围为-128~128,所以取值范围为:-2128到2128,约等于-3.4E38 — +3.4E38


自动类型转换就是 将`取值范围小的类型`自动提升为`取值范围大的类型` 的过程

所以当然是可以自动转换的,只不过会有精度的损失

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值