C Library - <float.h>
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 b<sup>e</sup>
or
floating-point = (+/-) precision x base<sup>exponent</sup>
Library宏 (Library Macros)
以下值是特定于实现的,并使用#define指令定义,但这些值可能不低于此处给出的值。 请注意,在所有情况下,FLT指的是float类型,DBL指的是double ,LDBL指的是long double 。
Sr.No. | 宏观和描述 |
---|---|
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 这些宏定义了最小浮点值。 |
例子 (Example)
以下示例显示了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