A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 68846259 中级黑马   /  2016-5-19 17:05  /  999 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

float取值为什么比long要大

6 个回复

倒序浏览
float 和 long 保存数据的格式不同,float分为指数和底数两部分。float可以表示long,但是会失去精度。
回复 使用道具 举报
本帖最后由 daniel031699 于 2016-5-20 15:53 编辑

答案是在网上找到的...你可以参考下

long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平分正负,数值范围是负2的63次方到正2的63次方-1。

  而float在内存中占4个字节,共32位,但是浮点数在内存中是这样的:

  V=(-1)^s * M * 2^E

  

  浮点数的32位不是简单的直接表示大小,而是按照一定的标准分配的。

  其中第1位,符号位,即S。

  接下来的8位,指数域,即E。

  剩下的23位,小数域,即M,M的取值范围为[1,2)或[0,1)。

  也就是说,浮点数在内存中的二进制值不是直接转换为十进制数值的,而是按照上述公式计算而来,通过这个公式,虽然只用到了4个字节,但是浮点数却比长整型的最大值要大。

回复 使用道具 举报
谢谢,这个有用
回复 使用道具 举报
daniel031699 发表于 2016-5-20 15:52
答案是在网上找到的...你可以参考下long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平 ...

谢谢,这个有用
回复 使用道具 举报
float是10的指数,所以大
回复 使用道具 举报
daniel031699 发表于 2016-5-20 15:52
答案是在网上找到的...你可以参考下long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平 ...

这个66666,我还从来没见过这张图.......
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马