浮点类型
C标准规定的浮点型有float、 double、 long double,和整数类型一样,既没有规定每种类型占多少字节,也没有规定采用哪种表示形式。浮点数的实现在各种平台上差异很大,有的处理器有浮点运算单元(称为硬件实现),有的处理器没有,只能做整数运算,那么就要用整数运算来模拟浮点运算(称为软件实现)。
浮点类型除了常规的小数写法之外,还可以采用科学计数法法表示。尾数和指数之间用e或E隔开,例如314e-2表示314×10-2。如果尾数的小数点左边或右边没有数字则表示这一部分为零,例如3.e-1,.987等等。
浮点数也可以加一个后缀,例如3.14f、 .01L,浮点数的后缀和类型之间的对应关系比较简单,没有后缀的浮点数常量是double型的,有后缀f或F的浮点数常量是float型的,有后缀l或L的浮点数常量是long double型的。
下表列出了关于标准浮点类型的存储大小、值范围和精度的细节:
|
类型 |
存储大小 |
精度 |
|
float |
4 字节 |
6 位小数 |
|
double |
8 字节 |
15 位小数 |
|
long double |
16 字节 |
19 位小数 |
头文件 float.h 定义了宏,在程序中可以使用这些值和其他有关实数二进制表示的细节。下面的实例将输出浮点类型占用的存储空间以及它的范围值:
#include <stdio.h>
#include <float.h>
int main()
{
printf("float 存储最大字节数 : %lu \n", sizeof(float));
printf("float 最小值: %E\n", FLT_MIN );
printf("float 最大值: %E\n", FLT_MAX );
printf("精度值: %d\n", FLT_DIG );
return 0;
}

浙公网安备 33010602011771号