一直不明白这个于是上网搜了一下大致明白了
浮点数的存储
以二进制科学计数法的方式存储,形式为
符号位(正0负1)指数位(二的几次幂)小数位
Q1:无整数位?
A1:由于科学计数法,所有的整数位皆为1,0开头可以以负幂次方显示
指数位
占据 8bit,表示范围0-255
由于有小数点可左移也可右移,即幂有正负,于是做一个划分
0-126为负
127-255为正
//其中,127表示0。所以2的4次幂的表示:127+4=131,131再转为二进制表示
小数位
小数的二进制表示是不断地乘以2,取其整数部分,及其到1.0为止
有效位
看书过程中,前文:float 32有效位,后文 float最少保证6位有效位
其实,这指的是两种方式的有效位
32位有效位,二进制表示
符号 1bit 指数8bit 小数 32-9=24bit
6位有效位,十进制表示
我们可以用4位二进制数来表示0-9中的任意一个数,例如:9---1001
因此,小数部分的24bit可以除以4,来表示我们的小数。所以6位有效位
精度丢失
你会发现,有些小数乘以无数个2都无法达到1.0此等圆满境界
但是,小数存储位置有限
于是,计算机会取近似值来存储那些小数,精度因此降低