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
相关推荐
zoyation6 小时前
多线程简介和在JAVA中应用
java·开发语言
余辉zmh6 小时前
【C++篇】:ServiceBus RPC 分布式服务总线框架项目
开发语言·c++·rpc
水饺编程6 小时前
第3章,[标签 Win32] :窗口类03,窗口过程函数字段
c语言·c++·windows·visual studio
Tony Bai6 小时前
释放 Go 的极限潜能:CPU 缓存友好的数据结构设计指南
开发语言·后端·缓存·golang
仲夏幻境7 小时前
js利用ajax同步调用如何
开发语言·javascript·ajax
aramae7 小时前
详细分析平衡树--红黑树(万字长文/图文详解)
开发语言·数据结构·c++·笔记·算法
一百天成为python专家7 小时前
python爬虫入门(小白五分钟从入门到精通)
开发语言·爬虫·python·opencv·yolo·计算机视觉·正则表达式
Mr YiRan7 小时前
多线程性能优化基础
android·java·开发语言·性能优化
熊猫钓鱼>_>7 小时前
Java String 性能优化与内存管理:现代开发实战指南
java·开发语言·性能优化