乐趣区

第3课-浮点数的秘密

·浮点数在内存的存储方式为:符号数,指数,尾数

浮点数最高位为 0 表示正数,1 表示负数

float(4 字节)与 double(8 字节)类型中的数据在计算机内部的表示法是相同的,但由于所占存储空间的不同,其分别能够表示的数值范围和精度不同。
·浮点数的转换
1. 将浮点数转换成二进制
2. 用科学计数法表示二进制浮点数
3. 计算指数偏移后的值

注意:计算指数时需要加上偏移量,而偏移量的值与类型有关


例子 3 -1:

include “stdio.h”

int main()
{

float f = 8.25;
unsigned int *p = (unsigned int *)&f;
printf("0x%08X\n", *p);
return 0;

}
输出:
0x41040000

补充:
0x%08Xn 意思为:
1.%x 代表 16 进制输出的字母符号为小写
2.08 指定数据的最小输出位数为 8,若不够 8 位,则补零,若大于 8 位,则按照原位数输出;
3.0x 会输出,也就是最后会输出 0xXXXXXXXX 一些数,0x 前缀表示是十六进制;
4.n 为换行符;
5.* P 所指向的地址

·float 能表示具体数字的个数与 int 相同
·float 可表示的数字之间不是连续的,存在间隙
·float 只是一种近似的表示法,不能作为精确数使用
·由于内存表示法相对复杂,float 的运算速度比 int 慢得多
注意:
double 与 float 具有相同的内存表示法,因此 double 也是不精确的。由于 double 占用的内存较多,所能表示的精度比 float 高。

例子 3 -2:

include “stdio.h”

int main()
{

float f = 3.1415;
float fl = 123456789;
printf("%0.10f\n",f);
printf("%0.10f\n", fl);

}
输出结果:
3.1414999962
123456792.0000000000

小结:
·浮点类型与整数类型的内存表示方法不同
·浮点类型的内存表示更复杂
·浮点类型可表示的范围更大
·浮点类型是一种不精确的类型
·浮点类型的运算速度较慢

以后使用浮点型时需要注意
狄泰软件学院

退出移动版