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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gzp123 中级黑马   /  2015-4-29 00:05  /  11444 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么float的数值范围比long大

17 个回复

倒序浏览
因为他后面还有小数部分吧  具体的我也不知道 只是就这么记住了
回复 使用道具 举报
这帖水的没水平了
回复 使用道具 举报
float类型数字在计算机中用4个字节存储。遵循IEEE-754格式标准:         一个浮点数有2部分组成:底数m和指数e  底数部分 使用二进制数来表示此浮点数的实际值 指数部分 占用8bit的二进制数,可表示数值范围为0-255  但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。         所以,float类型的指数可从-126到128  底数部分实际是占用24bit的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit         科学计数法。  格式: SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM S表示浮点数正负     E指数加上127后的值得二进制数据 M底数  举例: 17.625在内存中的存储  首先要把17.625换算成二进制:10001.101          整数部分,除以2,直到商为0,余数反转。         小数部分,乘以2,直到乘位0,进位顺序取。  在将10001.101右移,直到小数点前只剩1位:         1.0001101 * 2^4 因为右移动了四位  这个时候,我们的底数和指数就出来了 底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101 指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011 符号部分是整数,所以是0 综上所述,17.625在内存中的存储格式是: 01000001 10001101 00000000 00000000       
回复 使用道具 举报
:lol老师讲过。。。不过忘记了。
回复 使用道具 举报
三楼正解!!!
回复 使用道具 举报
float类型占4个字节,总共32位,第一位为符号位  第二位到第九位为指数位 后面23位为小数点位。那么计算指数位的值就OK了 8位 第一位不是符号位,故其范围在0-255之间。这个值是加了127之后的区间 所以必须要减去127才得到真实的指数值 另外全0和全1作为特殊处理,所以直接表示-126到127.
非规格化表示:
    当指数部分全0而且小数部分不全0时表示的是非规格化的浮点数,因为这里默认没有前导1,而是0.
    取值位0.f * 2^(-126),表示范围位 2^(-149)~~ (1-2^(-23)) * 2^(-126) 这里没有考虑符号.这里为什么是-126而不是-127? 如果是-127的话,那么最大表示为 2^(-127)-2^(-149),很显然2^(-127) ~~2^(-126) 就没法表示了.   
其他特殊表示
    1.当指数部分和小数部分全为0时,表示0值,有+0和-0之分(符号位决定),0x00000000表示正0,0x80000000表示负0.
    2.指数部分全1,小数部分全0时,表示无穷大,有正无穷和负无穷,0x7f800000表示正无穷,0xff800000表示负无穷.
    3.指数部分全1,小数部分不全0时,表示NaN,分为QNaN和SNaN,Java中都是NaN.   结论:
    可以看出浮点数的取值范围是:2^(-149)~~(2-2^(-23))*2^127,也就是Float.MIN_VALUE和Float.MAX_VALUE.
回复 使用道具 举报
gzp123 中级黑马 2015-4-30 23:54:04
8#
受教,小弟记下了
回复 使用道具 举报
精确度比long高,底层结构不同
回复 使用道具 举报
flout存储的指数
回复 使用道具 举报
存储方式不一样
回复 使用道具 举报
float是字符型的,long是长整型的,float的存储和long是不一样,float是四字节但是采用10进制存储,所以比二进制八个字节long大。
回复 使用道具 举报
wnk77521 发表于 2015-4-29 02:35
float类型数字在计算机中用4个字节存储。遵循IEEE-754格式标准:         一个浮点数有2部分组成:底数m和指数e   ...

赞一个,学习了{:3_53:}
回复 使用道具 举报
Cat 来自手机 中级黑马 2015-5-1 17:02:19
14#
学习一下~
回复 使用道具 举报
Cat 来自手机 中级黑马 2015-5-1 17:02:19
15#
学习一下~
回复 使用道具 举报
一个是32 一个是64 当然64大
回复 使用道具 举报

:):):):):):)
回复 使用道具 举报
受教了,刚还在纠结这个问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马