一个浮点数在内存中存放的方法:
1、先把这个数转化成二进制数
例如
327654444 = 10011100001111001110000101100
2、在此基础上,把它写成科学计数的形式
327654444 = 1.0011100001111001110000101100e+00011100
3、截取小数点后23位,后面保留为0,得到:
1.0011100001111001110000100000e+00011100
把小数点后的bit(23个)存在尾数位区,把指数(00011100共8位)存在指数位区;由于是正数,符号位置0。这样,就完成了存放。
因此,在C程序中,以下在吗输出的结果将是 327654432.000000
int main(int argc, char *argv[])
{
float a = 327654444;
printf("a = %fn",a);
return 0;
}
由此看出,float类型的精度,从二进制科学计数的角度来讲,就是1/2^23。这表 示了float类型可表示数值(在科学计数法表示中)的最小步进(基本单元)。
另:float所占的4个字节的分配如图:
1bit(符号位) | 8bits(指数位) | 23bits(尾数位) |
参考:
http://www.cnblogs.com/tekson/archive/2009/07/16/1524604.html
http://www.fmddlmyy.cn/text60.html