黑马程序员技术交流社区

标题: float取值为什么比long要大 [打印本页]

作者: 68846259    时间: 2016-5-19 17:05
标题: float取值为什么比long要大
float取值为什么比long要大

作者: 骄阳登峰    时间: 2016-5-19 18:09
float 和 long 保存数据的格式不同,float分为指数和底数两部分。float可以表示long,但是会失去精度。
作者: daniel031699    时间: 2016-5-20 15:52
本帖最后由 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个字节,但是浮点数却比长整型的最大值要大。


作者: 68846259    时间: 2016-5-21 20:17
谢谢,这个有用
作者: 68846259    时间: 2016-5-21 20:20
daniel031699 发表于 2016-5-20 15:52
答案是在网上找到的...你可以参考下long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平 ...

谢谢,这个有用
作者: HeiMaZ    时间: 2016-5-21 22:48
float是10的指数,所以大
作者: 善良的死神达乐    时间: 2016-5-21 22:50
daniel031699 发表于 2016-5-20 15:52
答案是在网上找到的...你可以参考下long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平 ...

这个66666,我还从来没见过这张图.......




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2