C标准库的 float.h 头文件包含一组与浮点值相关的各种与平台相关的常量.这些常量由ANSI C提出.它们允许制作更多可移植程序.在检查所有常量之前,最好先了解浮点数由以下四个元素组成 :
Sr.No. | 组件&组件说明 |
---|---|
1 | S 签署(+/-) |
2 | b 指数表示的基数或基数,2表示二进制,10表示十进制,16表示十六进制,依此类推...... |
3 | e 指数,最小值 e min 和最大值 e max 之间的整数. |
4 | p precision,有效数字中的base-b数字数. |
根据以上4个组成部分,浮点数的值如下:
floating-point = ( S ) p x beor floating-point = (+/-) precision x baseexponent
以下值是特定于实现的,并使用#define指令定义,但这些值可能不低于此处给出的值.请注意,在所有情况下,FLT引用类型 float ,DBL引用 double ,LDBL引用 long double .
Sr.No. | Macro&说明 |
---|---|
1 | FLT_ROUNDS 定义浮点加法的舍入模式,它可以具有以下任何值 :
|
2 | FLT_RADIX 2 这定义了指数的基本基数表示. base-2是二进制,base-10是正常的十进制表示,base-16是Hex. |
3 | FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG 这些宏定义了数字中的位数(在FLT_RADIX基础中). |
4 | FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 这些宏定义了四舍五入后可以无变化地表示的最大十进制数字(基数为10). |
5 | FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP 这些宏定义了指数的最小负整数值在基地FLT_RADIX. |
6 | FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 这些宏定义了基数为10的指数的最小负整数值. |
7 | FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP 这些宏定义了基础FLT_RADIX中指数的最大整数值. |
8 | FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 LDBL_MAX_10_EXP +37 这些宏定义了最大整数值基数为10的指数. |
9 | FLT_MAX 1E + 37 DBL_MAX 1E + 37 LDBL_MAX 1E + 37 这些宏定义了最大有限浮点值. |
10 | FLT_EPSILON 1E-5 DBL _EPSILON 1E-9 LDBL_EPSILON 1E-9 这些宏定义了可表示的最低有效数字. |
11 | FLT_MIN 1E-37 DBL_MIN 1E-37 LDBL_MIN 1E-37 这些宏定义了最小浮点值. |
以下示例显示了float.h文件中定义的一些常量的用法.
#include <stdio.h> #include <float.h> int main () { printf("The maximum value of float = %.10e\n", FLT_MAX); printf("The minimum value of float = %.10e\n", FLT_MIN); printf("The number of digits in the number = %.10e\n", FLT_MANT_DIG); }
让我们编译并运行上述程序,产生以下结果 :
The maximum value of float = 3.4028234664e+38 The minimum value of float = 1.1754943508e-38 The number of digits in the number = 7.2996655210e-312