java中lang与float转换(为什么float容量大/float的准确范围)

当我们从表面看,lang(64位)>float(32位),好似lang的容量比float大,这样我们就会奇怪,因为lang可隐式转换为float,float转为lang只能强制转换。
从表象看显然是奇怪的,因为java中关于类型转换是这样说的:
在这里插入图片描述

那么我们需要仔细分析lang与float的容量:

lang:8字节,64位,除去一位符号位,剩余尾数63位,其范围在(±)2的63次幂之间

float呢,它符合IEEE 754标准,4字节32位中,1位符号位,8位指数位,23位尾数位
那么float的范围呢,先说结论:2**-128到2**127之间
到这里用作理解已经足够的,但是关于float范围的确定我相信很多小伙伴都容易记混,下面也来说一下
folat的最大最小:

最大值取于:

符号位为正,即0,尾数全1,指数11111110(指数全1有特殊用途,故不取)
指数转10进制-127(偏移量)=127
那么最大值
1.1111111 1111111 11111111 x 2**127
这个值为 340282346638528859811704183484516925440,通常表示成 3.4028235E38

类似的,float表示的最小值:

最大值符号位置1取负即可
那么,float范围为

[-3.4028235E38, 3.4028235E38]

另外:
1.关于float的精度及范围的问题推荐这篇博文
float的精度和取值范围

2.关于Float.MIN_VALUE 和 Float.MAX_VALUE
Float.MAX_VALUE即最大值
而Float.MIN_VALUE 呢?最初以为Float.MIN_VALUE是float类型的最小值,其实根本不是,它应该叫做float类型能够表示的最小精度,它的实际定义如下:
```Java
public static final float MIN_VALUE = 1.40129846432481707e-45f;
```

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涛涛ALG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值