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
相关推荐
踏着七彩祥云的小丑13 分钟前
Go学习第8天:接口 + 泛型 + 错误处理
开发语言·学习·golang·go
聆风吟º15 分钟前
Python基础数据类型(一):数字类型
开发语言·python·float·int·bool·数字类型
小灰灰搞电子22 分钟前
C++ boost::container 详解:高性能容器库完全指南
开发语言·c++·boost
Y_Bk25 分钟前
第十七届蓝桥杯C/C++A组省赛
c语言·数据结构·c++·算法·蓝桥杯
Brilliantwxx25 分钟前
【C++】 C++11 知识点梳理(上)
开发语言·c++
飞天狗11126 分钟前
零基础JavaWeb入门——第4课:表单处理 —— 浏览器怎么把数据发给服务器
java·开发语言·前端·后端·servlet
多彩电脑32 分钟前
向AIDE(安卓设备上的Android Studio)导入aar库
android·java·开发语言·androidx
江屿风42 分钟前
C++图论基础单源最短路-常规版dijkstra算法/堆优化版dijkstra算法/bellman-ford 算法/spfa 算法流食般投喂
开发语言·c++·笔记·算法·图论
摇滚侠44 分钟前
MyBatis 入门到项目实战 MyBatis 逆向工程 62
java·开发语言·mybatis
ch.ju1 小时前
Java Programming Chapter 4——Multi-level inheritance
java·开发语言