栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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


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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/865682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号