头文件

<cfloat> (float.h)

浮点类型的特性
此头文件描述了特定系统和编译器实现所使用的浮点类型的特性。

一个浮点数由四个元素组成
  • 符号:负数或非负数
  • 基数(或底数):表示单个数字可以表示的不同数值(二进制为2,十进制为10,十六进制为16,等等...)
  • 有效数(或尾数):由上述基数的一系列数字组成。这个系列中数字的数量即为精度
  • 指数(也称为阶码或标度):表示有效数的偏移量,通过以下方式影响数值
    浮点数值 = 有效数 x 基数指数,并带有其相应的符号。

宏常量

下表显示了此头文件中定义的不同值的名称及其对所有实现的最小或最大值(每个实现可能会将这些值设置为大于或小于此最小值或最大值,具体如规定)

当存在一组以 FLT_DBL_LDBL_ 为前缀的宏时,以 FLT_ 开头的适用于 float 类型,以 DBL_ 开头的适用于 double,以 LDBL_ 开头的适用于 long double

名称代表表示
FLT_RADIX
samp>2
/samp> or greater    
RADIX(基数)所有浮点类型(floatdoublelong double)的基数。
FLT_MANT_DIG
DBL_MANT_DIG
LDBL_MANT_DIG
MANTissa DIGits(尾数位数)有效数的精度,即构成有效数的数字位数。
FLT_DIG
DBL_DIG
LDBL_DIG
6 或更大
10 或更大
10 或更大
DIGits(位数)可以四舍五入到浮点数再转换回来而十进制位数不变的十进制数字的数量。
FLT_MIN_EXP
DBL_MIN_EXP
LDBL_MIN_EXP
MINimum EXPonent(最小指数)生成规范化浮点数的指数的最小负整数值。
FLT_MIN_10_EXP
DBL_MIN_10_EXP
LDBL_MIN_10_EXP
-37 或更小
-37 或更小
-37 或更小
MINimum base-10 EXPonent(最小以10为底的指数)能生成规范化浮点数的以10为底的表达式的指数的最小负整数值。
FLT_MAX_EXP
DBL_MAX_EXP
LDBL_MAX_EXP
MAXimum EXPonent(最大指数)生成规范化浮点数的指数的最大整数值。
FLT_MAX_10_EXP
DBL_MAX_10_EXP
LDBL_MAX_10_EXP
37 或更大
37 或更大
37 或更大
MAXimum base-10 EXPonent(最大以10为底的指数)能生成规范化浮点数的以10为底的表达式的指数的最大整数值。
FLT_MAX
DBL_MAX
LDBL_MAX
1E+37 或更大
1E+37 或更大
1E+37 或更大
MAXimum(最大值)可表示的最大有限浮点数。
FLT_EPSILON
DBL_EPSILON
LDBL_EPSILON
1E-5 或更小
1E-9 或更小
1E-9 或更小
EPSILON(极小值)1与大于1的最小可表示值之间的差值。
FLT_MIN
DBL_MIN
LDBL_MIN
1E-37 或更小
1E-37 或更小
1E-37 或更小
MINimum(最小值)可表示的最小正浮点数。
FLT_ROUNDSROUND(舍入)舍入行为。可能的值
-1 不确定
 0 向零舍入
 1 向最近的数舍入
 2 向正无穷大舍入
 3 向负无穷大舍入
适用于所有浮点类型(floatdoublelong double)。
FLT_EVAL_METHODEVALuation METHOD(求值方法)求值格式的属性。可能的值
-1 不确定
 0 仅以类型的范围和精度进行求值
 1floatdouble 作为 double 求值,将 long double 作为 long double 求值。
 2 将所有类型作为 long double 求值。其他负值表示由实现定义的行为。
适用于所有浮点类型(floatdoublelong double)。
DECIMAL_DIGDECIMAL DIGits(十进制位数)可以四舍五入到浮点类型再转换回相同的十进制数字,且不损失精度的十进制位数。

兼容性

FLT_EVAL_METHODDECIMAL_DIG 是为符合1999年或更高版本C标准的库定义的(这仅包括自2011年以来的C++标准:C++11)。

另见