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

相关文章
|
Go
Go语言浮点数完全手册 float32和float64一文掌握!
Go语言浮点数完全手册 float32和float64一文掌握!
1873 0
|
3月前
|
程序员 编译器
C 标准库 - <float.h>详解
`&lt;float.h&gt;` 是 C 标准库中的头文件,用于定义浮点数的属性和限制,包括有效数字位数(如 `FLT_DIG`)、最小最大值(如 `FLT_MIN` 和 `FLT_MAX`),以及特殊值(如 `FLT_INFINITY`)。它通过提供一系列常量和宏帮助程序员处理浮点运算的范围和精度问题。
|
3月前
|
C语言
C 标准库 - <math.h>详解
`&lt;math.h&gt;` 是 C 标准库中的头文件,提供了丰富的数学计算函数和常量。重要常量包括自然常数 `M_E` 和圆周率 `M_PI`。常用函数涵盖指数、对数、幂、平方根、三角及反三角函数等,如 `exp`、`log`、`pow`、`sqrt`、`sin`、`cos` 等。
102 13
|
7月前
|
存储 Python
Python浮点型(float)
【4月更文挑战第9天】Python中的浮点型(float)表示实数,基于IEEE 754双精度标准,约有15-17位十进制精度。创建浮点型变量可通过直接赋值,如`x = 3.14`。支持加减乘除等运算,但运算可能因精度问题产生不精确结果,如`0.1 + 0.2 != 0.3`。可使用`round()`函数四舍五入,或通过`is_close()`函数比较浮点数是否接近。在需要高精度计算时,建议使用`decimal`模块。
125 2
|
7月前
|
Python
在Python中,整型(int)
【4月更文挑战第9天】Python的整型(int)数据类型支持无限大小的整数,包括正数、负数和零。可通过加、减、乘、除、取模和幂运算进行操作。使用`int()`函数可进行类型转换,例如将浮点数转为整数。Python还支持位运算,如按位与、或、异或、取反、左移和右移。整型无固定范围,但大规模数据可能消耗大量内存。注意整数除法会丢失小数部分,浮点数转整数会截断。
85 1
|
7月前
C标准库 - <float.h>
C标准库 - <float.h>。
26 2
|
7月前
|
存储 数据挖掘 C语言
c语言中float的作用类型
c语言中float的作用类型
216 0
c语言中float的作用类型
|
7月前
float.h 头文件
float.h 头文件。
35 1
|
7月前
|
存储 C++ 索引
C++ 标准库类型之vector类型
C++ 标准库类型之vector类型
51 0
|
存储 自然语言处理 Java
[oeasy]python0072_整数类型_int_integer_整型变量
[oeasy]python0072_整数类型_int_integer_整型变量
86 0

热门文章

最新文章