C 标准库 - <float.h>

简介: C 标准库 - <float.h>

简介

C 标准库<float.h> 头文件包含了一组与浮点值相关的依赖于平台的常量。这些常量由 ANSI C 提出,使得程序更具可移植性。在讲解这些常量之前,我们先了解一下浮点数的组成部分:

  • S:符号 ( +/- )
  • b:指数表示的基数,2 表示二进制,10 表示十进制,16 表示十六进制,等等…
  • e:指数,一个介于最小值 emin 和最大值 emax 之间的整数。
  • p:精度,基数 b 的有效位数

基于以上 4 个组成部分,一个浮点数的值可以表示为:

floating-point = ( S ) p x b^e

或者

floating-point = (+/-) precision x base^exponent

库宏

下面的值是特定实现的,且是通过 #define 指令来定义的,这些值都不得低于下边所给出的值。请注意,所有的实例 FLT 是指类型 floatDBL 是指类型 doubleLDBL 是指类型 long double

FLT_ROUNDS

定义浮点加法的舍入模式,它可以是下列任何一个值:

  • -1:无法确定
  • 0:趋向于零
  • 1:去最近的值
  • 2:趋向于正无穷
  • 3:趋向于负无穷
#include <stdio.h>
#include <float.h>

int main() {
    printf("FLT_ROUNDS: %d\n", FLT_ROUNDS);
    return 0;
}

FLT_RADIX

这个宏定义了指数表示的基数。基数 2 表示二进制,基数 10 表示十进制,基数 16 表示十六进制。

#include <stdio.h>
#include <float.h>

int main() {
    printf("FLT_RADIX: %d\n", FLT_RADIX);
    return 0;
}

FLT_MANT_DIG, DBL_MANT_DIG, LDBL_MANT_DIG

这些宏定义了 FLT_RADIX 基数中的位数。

#include <stdio.h>
#include <float.h>

int main() {
    printf("FLT_MANT_DIG: %d\n", FLT_MANT_DIG);
    printf("DBL_MANT_DIG: %d\n", DBL_MANT_DIG);
    printf("LDBL_MANT_DIG: %d\n", LDBL_MANT_DIG);
    return 0;
}

FLT_DIG, DBL_DIG, LDBL_DIG

这些宏定义了舍入后不会改变表示的十进制数字的最大值(基数 10)。

#include <stdio.h>
#include <float.h>

int main() {
    printf("FLT_DIG: %d\n", FLT_DIG);
    printf("DBL_DIG: %d\n", DBL_DIG);
    printf("LDBL_DIG: %d\n", LDBL_DIG);
    return 0;
}

FLT_MIN_EXP, DBL_MIN_EXP, LDBL_MIN_EXP

这些宏定义了基数为 FLT_RADIX 时的指数的最小负整数值。

#include <stdio.h>
#include <float.h>

int main() {
    printf("FLT_MIN_EXP: %d\n", FLT_MIN_EXP);
    printf("DBL_MIN_EXP: %d\n", DBL_MIN_EXP);
    printf("LDBL_MIN_EXP: %d\n", LDBL_MIN_EXP);
    return 0;
}

FLT_MIN_10_EXP, DBL_MIN_10_EXP, LDBL_MIN_10_EXP

这些宏定义了基数为 10 时的指数的最小负整数值。

#include <stdio.h>
#include <float.h>

int main() {
    printf("FLT_MIN_10_EXP: %d\n", FLT_MIN_10_EXP);
    printf("DBL_MIN_10_EXP: %d\n", DBL_MIN_10_EXP);
    printf("LDBL_MIN_10_EXP: %d\n", LDBL_MIN_10_EXP);
    return 0;
}

FLT_MAX_EXP, DBL_MAX_EXP, LDBL_MAX_EXP

这些宏定义了基数为 FLT_RADIX 时的指数的最大整数值。

#include <stdio.h>
#include <float.h>

int main() {
    printf("FLT_MAX_EXP: %d\n", FLT_MAX_EXP);
    printf("DBL_MAX_EXP: %d\n", DBL_MAX_EXP);
    printf("LDBL_MAX_EXP: %d\n", LDBL_MAX_EXP);
    return 0;
}
 

FLT_MAX_10_EXP, DBL_MAX_10_EXP, LDBL_MAX_10_EXP

这些宏定义了基数为 10 时的指数的最大整数值。

#include <stdio.h>
#include <float.h>

int main() {
    printf("FLT_MAX_10_EXP: %d\n", FLT_MAX_10_EXP);
    printf("DBL_MAX_10_EXP: %d\n", DBL_MAX_10_EXP);
    printf("LDBL_MAX_10_EXP: %d\n", LDBL_MAX_10_EXP);
    return 0;
}

FLT_MAX, DBL_MAX, LDBL_MAX

这些宏定义最大的有限浮点值。

#include <stdio.h>
#include <float.h>

int main() {
    printf("FLT_MAX: %.10e\n", FLT_MAX);
    printf("DBL_MAX: %.10e\n", DBL_MAX);
    printf("LDBL_MAX: %.10Le\n", LDBL_MAX);
    return 0;
}

FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON

这些宏定义了可表示的最小有效数字。

#include <stdio.h>
#include <float.h>

int main() {
    printf("FLT_EPSILON: %.10e\n", FLT_EPSILON);
    printf("DBL_EPSILON: %.10e\n", DBL_EPSILON);
    printf("LDBL_EPSILON: %.10Le\n", LDBL_EPSILON);
    return 0;
}


FLT_MIN, DBL_MIN, L

相关文章
|
6月前
Python-float()
Python-float
35 2
|
Go
Go语言浮点数完全手册 float32和float64一文掌握!
Go语言浮点数完全手册 float32和float64一文掌握!
1661 0
|
3月前
|
Rust 安全 算法
Go标准库的新 math/rand
Go标准库的新 math/rand
|
2月前
|
程序员 编译器
C 标准库 - <float.h>详解
`&lt;float.h&gt;` 是 C 标准库中的头文件,用于定义浮点数的属性和限制,包括有效数字位数(如 `FLT_DIG`)、最小最大值(如 `FLT_MIN` 和 `FLT_MAX`),以及特殊值(如 `FLT_INFINITY`)。它通过提供一系列常量和宏帮助程序员处理浮点运算的范围和精度问题。
|
2月前
|
C语言
C 标准库 - <math.h>详解
`&lt;math.h&gt;` 是 C 标准库中的头文件,提供了丰富的数学计算函数和常量。重要常量包括自然常数 `M_E` 和圆周率 `M_PI`。常用函数涵盖指数、对数、幂、平方根、三角及反三角函数等,如 `exp`、`log`、`pow`、`sqrt`、`sin`、`cos` 等。
63 13
|
5月前
|
C语言
C语言的标准库:string.h, math.h, stdlib.h
C语言的标准库:string.h, math.h, stdlib.h
|
6月前
|
存储 Python
Python浮点型(float)
【4月更文挑战第9天】Python中的浮点型(float)表示实数,基于IEEE 754双精度标准,约有15-17位十进制精度。创建浮点型变量可通过直接赋值,如`x = 3.14`。支持加减乘除等运算,但运算可能因精度问题产生不精确结果,如`0.1 + 0.2 != 0.3`。可使用`round()`函数四舍五入,或通过`is_close()`函数比较浮点数是否接近。在需要高精度计算时,建议使用`decimal`模块。
89 2
|
6月前
C标准库 - <float.h>
C标准库 - <float.h>。
23 2
|
6月前
float.h 头文件
float.h 头文件。
33 1
|
6月前
|
存储 数据挖掘 C语言
c语言中float的作用类型
c语言中float的作用类型
191 0
c语言中float的作用类型