C 库 - <float.h>


C 标准库的float.h头文件包含一组与浮点值相关的各种与平台相关的常量。这些常数是由 ANSI C 提出的。它们允许制作更多可移植的程序。在检查所有常量之前,最好了解浮点数由以下四个元素组成 -

先生。 组件及组件说明
1

S

符号 (+/-)

2

指数表示的基数或基数,2 表示二进制,10 表示十进制,16 表示十六进制,依此类推...

3

e

指数,最小值e min和最大值e max之间的整数。

4

p

精度,有效数中以 b 为基数的位数。

基于上述 4 个组成部分,浮点的值如下 -

floating-point = ( S ) p x be

or

floating-point = (+/-) precision x baseexponent

库宏

以下值是特定于实现的,并使用 #define 指令定义,但这些值不得低于此处给出的值。请注意,在所有情况下,FLT 指的是float类型,DBL 指的是double 类型,LDBL 指的是long double 类型

先生。 宏及描述
1

FLT_ROUNDS

定义浮点加法的舍入模式,它可以具有以下任何值 -

  • -1 − 不确定
  • 0 − 趋于零
  • 1 − 到最近的
  • 2 − 朝向正无穷大
  • 3 − 朝向负无穷大
2

FLT_RADIX 2

这定义了指数的基数表示。以 2 为基数是二进制,以 10 为基数是正常的十进制表示形式,以 16 为基数是十六进制。

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_最大1E+37

DBL_最大1E+37

LDBL_最大 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