C标准库--浮点<float.h>
文章目录
- 简介
- 库宏
- 单精度浮点数(float)
- 双精度浮点数(double)
- 扩展精度浮点数(long double)
- 实例
简介
<float.h> 是 C 标准库中的一个头文件,定义了与浮点数类型(float、double 和 long double)相关的宏。这些宏提供了浮点数的特性和限制,例如最大值、最小值、精度等。
<float.h> 提供了一组宏,用于描述浮点数类型的特性和限制。通过使用这些宏,我们可以编写更健壮的代码,处理与浮点数相关的边界情况和特殊情况。
C 标准库的 float.h 头文件包含了一组与浮点值相关的依赖于平台的常量。这些常量是由 ANSI C 提出的,这让程序更具有可移植性。在讲解这些常量之前,最好先弄清楚浮点数是由下面四个元素组成的:
基于以上 4 个组成部分,一个浮点数的值如下:
floating-point = ( S ) p x be
或
floating-point = (+/-) precision x baseexponent
库宏
下面的值是特定实现的,且是通过 #define 指令来定义的,这些值都不得低于下边所给出的值。请注意,所有的实例 FLT 是指类型 float,DBL 是指类型 double,LDBL 是指类型 long double。
单精度浮点数(float)
双精度浮点数(double)
扩展精度浮点数(long double)
实例
#include <stdio.h>#include <float.h>int main() {printf("Single precision (float):\n");printf("FLT_RADIX: %d\n", FLT_RADIX);printf("FLT_MANT_DIG: %d\n", FLT_MANT_DIG);printf("FLT_DIG: %d\n", FLT_DIG);printf("FLT_MIN_EXP: %d\n", FLT_MIN_EXP);printf("FLT_MIN_10_EXP: %d\n", FLT_MIN_10_EXP);printf("FLT_MAX_EXP: %d\n", FLT_MAX_EXP);printf("FLT_MAX_10_EXP: %d\n", FLT_MAX_10_EXP);printf("FLT_MAX: %e\n", FLT_MAX);printf("FLT_MIN: %e\n", FLT_MIN);printf("FLT_EPSILON: %e\n", FLT_EPSILON);printf("\nDouble precision (double):\n");printf("DBL_MANT_DIG: %d\n", DBL_MANT_DIG);printf("DBL_DIG: %d\n", DBL_DIG);printf("DBL_MIN_EXP: %d\n", DBL_MIN_EXP);printf("DBL_MIN_10_EXP: %d\n", DBL_MIN_10_EXP);printf("DBL_MAX_EXP: %d\n", DBL_MAX_EXP);printf("DBL_MAX_10_EXP: %d\n", DBL_MAX_10_EXP);printf("DBL_MAX: %e\n", DBL_MAX);printf("DBL_MIN: %e\n", DBL_MIN);printf("DBL_EPSILON: %e\n", DBL_EPSILON);printf("\nExtended precision (long double):\n");printf("LDBL_MANT_DIG: %d\n", LDBL_MANT_DIG);printf("LDBL_DIG: %d\n", LDBL_DIG);printf("LDBL_MIN_EXP: %d\n", LDBL_MIN_EXP);printf("LDBL_MIN_10_EXP: %d\n", LDBL_MIN_10_EXP);printf("LDBL_MAX_EXP: %d\n", LDBL_MAX_EXP);printf("LDBL_MAX_10_EXP: %d\n", LDBL_MAX_10_EXP);printf("LDBL_MAX: %Le\n", LDBL_MAX);printf("LDBL_MIN: %Le\n", LDBL_MIN);printf("LDBL_EPSILON: %Le\n", LDBL_EPSILON);return 0;}
运行结果:Single precision (float):FLT_RADIX: 2FLT_MANT_DIG: 24FLT_DIG: 6FLT_MIN_EXP: -125FLT_MIN_10_EXP: -37FLT_MAX_EXP: 128FLT_MAX_10_EXP: 38FLT_MAX: 3.402823e+38FLT_MIN: 1.175494e-38FLT_EPSILON: 1.192093e-07Double precision (double):DBL_MANT_DIG: 53DBL_DIG: 15DBL_MIN_EXP: -1021DBL_MIN_10_EXP: -307DBL_MAX_EXP: 1024DBL_MAX_10_EXP: 308DBL_MAX: 1.797693e+308DBL_MIN: 2.225074e-308DBL_EPSILON: 2.220446e-16Extended precision (long double):LDBL_MANT_DIG: 64LDBL_DIG: 18LDBL_MIN_EXP: -16381LDBL_MIN_10_EXP: -4931LDBL_MAX_EXP: 16384LDBL_MAX_10_EXP: 4932LDBL_MAX: 1.189731e+4932LDBL_MIN: 3.362103e-4932LDBL_EPSILON: 1.084202e-19