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

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

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

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

clipboard.png

clipboard.png
例子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

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

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


YingLi
6 声望5 粉丝

From zero to hero.