本帖最后由 牡丹花下死做鬼 于 2013-8-11 08:53 编辑
loat的指数位有8位,而double的指数位有11位,分布如下:
float:
1bit(符号位)
8bits(指数位)
23bits(尾数位)
(浮点)数值 = 尾数 × 底数 ^ 指数,(附加正负号)
float的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
其中float的存储方式如下图所示:
如8.25,用二进制的科学计数法表示为:1.0001*23
按照上面的存储方式,符号位为:0,表示为正,指数位为:3+127=130 ,位数部分为,故8.25的存储方式如下图所示:
上面这一堆是网上找的说实话我也没看懂希望有大牛解释(应为我看甲乙也会先应用网上的正规解释哈)说下我的理解
不难看出你说的是对的 我的理解是 float是占4个字节 但无论是整数部分还是小数部分都是要占据空间的而他的总空间是不变的所以整数部分位数增加小数部分所能保证的精度也就减小 觉得好的话给最佳啊~ 应为我也是新手所以说错了望请见谅 |