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

目录
相关文章
|
9月前
|
Go
Go语言浮点数完全手册 float32和float64一文掌握!
Go语言浮点数完全手册 float32和float64一文掌握!
865 0
|
5天前
|
C语言
C语言的标准库:string.h, math.h, stdlib.h
C语言的标准库:string.h, math.h, stdlib.h
8 1
|
2月前
|
存储 Python
Python浮点型(float)
【4月更文挑战第9天】Python中的浮点型(float)表示实数,基于IEEE 754双精度标准,约有15-17位十进制精度。创建浮点型变量可通过直接赋值,如`x = 3.14`。支持加减乘除等运算,但运算可能因精度问题产生不精确结果,如`0.1 + 0.2 != 0.3`。可使用`round()`函数四舍五入,或通过`is_close()`函数比较浮点数是否接近。在需要高精度计算时,建议使用`decimal`模块。
24 2
Python之pandas:数据类型变换之object、category、bool、int32、int64、float64以及数据类型标准化之详细攻略
Python之pandas:数据类型变换之object、category、bool、int32、int64、float64以及数据类型标准化之详细攻略
Python之pandas:数据类型变换之object、category、bool、int32、int64、float64以及数据类型标准化之详细攻略
|
2月前
|
Python
在Python中,整型(int)
【4月更文挑战第9天】Python的整型(int)数据类型支持无限大小的整数,包括正数、负数和零。可通过加、减、乘、除、取模和幂运算进行操作。使用`int()`函数可进行类型转换,例如将浮点数转为整数。Python还支持位运算,如按位与、或、异或、取反、左移和右移。整型无固定范围,但大规模数据可能消耗大量内存。注意整数除法会丢失小数部分,浮点数转整数会截断。
16 1
|
2月前
C标准库 - <float.h>
C标准库 - <float.h>。
15 2
|
2月前
float.h 头文件
float.h 头文件。
21 1
|
2月前
|
存储 数据挖掘 C语言
c语言中float的作用类型
c语言中float的作用类型
70 0
c语言中float的作用类型
|
2月前
|
安全 Python
Python系列(16)—— string类型转float类型
Python系列(16)—— string类型转float类型
|
11月前
|
C++
C/C++ 关于double和float两种类型的区别
C/C++ 关于double和float两种类型的区别
C/C++ 关于double和float两种类型的区别