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
相关推荐
2603_965148114 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
SuperByteMaster7 小时前
timer.c 介绍
c语言
知无不研7 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
cfm_29147 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
C++ 老炮儿的技术栈9 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011169 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据9 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
zlinear数据采集卡9 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Poo_Chai10 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库
瑞码空间10 小时前
Java 图形界面(GUI)完整知识点手册
java·开发语言·图形界面·swing