C标准库--浮点<float.h>

文章目录

  • 简介
  • 库宏
    • [   单精度浮点数(float)](#   单精度浮点数(float))
    • [   双精度浮点数(double)](#   双精度浮点数(double))
    • [   扩展精度浮点数(long 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)

实例

c 复制代码
		#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: 2
		FLT_MANT_DIG: 24
		FLT_DIG: 6
		FLT_MIN_EXP: -125
		FLT_MIN_10_EXP: -37
		FLT_MAX_EXP: 128
		FLT_MAX_10_EXP: 38
		FLT_MAX: 3.402823e+38
		FLT_MIN: 1.175494e-38
		FLT_EPSILON: 1.192093e-07
		
		Double precision (double):
		DBL_MANT_DIG: 53
		DBL_DIG: 15
		DBL_MIN_EXP: -1021
		DBL_MIN_10_EXP: -307
		DBL_MAX_EXP: 1024
		DBL_MAX_10_EXP: 308
		DBL_MAX: 1.797693e+308
		DBL_MIN: 2.225074e-308
		DBL_EPSILON: 2.220446e-16
		
		Extended precision (long double):
		LDBL_MANT_DIG: 64
		LDBL_DIG: 18
		LDBL_MIN_EXP: -16381
		LDBL_MIN_10_EXP: -4931
		LDBL_MAX_EXP: 16384
		LDBL_MAX_10_EXP: 4932
		LDBL_MAX: 1.189731e+4932
		LDBL_MIN: 3.362103e-4932
		LDBL_EPSILON: 1.084202e-19
相关推荐
测试_AI_一辰42 分钟前
项目实践笔记13:多用户事实碎片 Agent 的接口测试与约束设计
开发语言·人工智能·ai编程
云小逸1 小时前
【Nmap 设备类型识别技术】整体概况
服务器·c语言·网络·c++·nmap
twj_one1 小时前
java中23种设计模式
java·开发语言·设计模式
梵刹古音1 小时前
【C语言】 跳转语句
c语言·开发语言·算法
阿猿收手吧!1 小时前
【C++】C++模板特化:精准定制泛型逻辑
开发语言·c++·算法
ghie90902 小时前
MATLAB中编写不平衡磁拉力方程
开发语言·matlab
C语言小火车2 小时前
Qt样式实现方式详解:六大方法全面解析
c语言·c++·qt·学习
weixin_452159552 小时前
C++与Java性能对比
开发语言·c++·算法
会叫的恐龙2 小时前
C++ 核心知识点汇总(第一日)(输入输出与变量、类型转换)
开发语言·c++
2301_765703142 小时前
C++中的工厂模式实战
开发语言·c++·算法