当前位置:   article > 正文

C语言float.h

float.h

本文已整合到C语言标准库深度解读
float.h用以描述浮点数并提供了浮点算术的基本信息,这些信息大多是通过宏的形式定义的。

在C语言中,一个浮点数可以表示为

x = s b e ∑ k = 1 p f k b − k , e min ⁡ < e ≤ e max ⁡ x=sb^e\sum_{k=1}^pf_kb^{-k}, e_{\min}<e\leq e_{\max} x=sbek=1pfkbk,emin<eemax

其中, s s s为符号,取值为 ± 1 \pm1 ±1 b b b是大于1的整数,表示基数; e e e为指数; p p p为精度; f k f_k fk表示有效数字。记 M = ∑ k = 1 p f k b − k M=\sum_{k=1}^pf_kb^{-k} M=k=1pfkbk,则可写为

x = s × M × b e , e min ⁡ < e ≤ e max ⁡ x=s\times M\times b^e, e_{\min}<e\leq e_{\max} x=s×M×be,emin<eemax

float.h中,FLT_RADIX表示基数,即b,这个b对所有浮点数类型都有效。而float.hdefine的值中,绝大多数可分为三类,分别对应floatdoublelong double类型:

floatdoublelong double简要说明
FLT_MANT_DIGDBL_MANT_DIGLDBL_MANT_DIGb进制下M的最大长度
FLT_DIG( ≥ 6 \ge6 6)DBL_DIG( ≥ 10 \ge10 10)LDBL_DIG( ≥ 10 \ge10 10)小数点后精确数字位数
FLT_MIN_EXPDBL_MIN_EXPLDBL_MIN_EXPb进制下e的最小值
FLT_MAX_EXPDBL_MAX_EXPLDBL_MAX_EXPb进制下e的最大值
FLT_MIN_10_EXPDBL_MIN_10_EXPLDBL_MIN_10_EXP十进制下 e min ⁡ ≤ − 37 e_{\min}\le-37 emin37
FLT_MAX_10_EXPDBL_MAX_10_EXPLDBL_MAX_10_EXP十进制下 e max ⁡ ≥ 37 e_{\max}\ge37 emax37
FLT_MAXDBL_MAXLDBL_MAX浮点数最大值 ⩾ 1 0 37 \geqslant10^{37} 1037
FLT_MINDBL_MINLDBL_MIN浮点数最小值 ⩽ 1 0 − 37 \leqslant10^{-37} 1037
FLT_EPSILON
( ⩽ 1 0 − 5 \leqslant10^{-5} 105)
DBL_EPSILON
( ⩽ 1 0 − 9 \leqslant10^{-9} 109)
LDBL_EPSILON
( ⩽ 1 0 − 9 \leqslant10^{-9} 109)
最小差值

其中,XXX_EPSILON表示1和大于1的最小浮点数之间的差值。

此外,还有三个独立的常量:

FLT_ROUNDS表示浮点加法的舍入模式:

  • -1:无法确定
  • 0:趋向于零
  • 1:趋向最近的值
  • 2:趋向于正无穷
  • 3:趋向于负无穷。

FLT_EVAL_METHOD:指明表达式求值时是否需要提升浮点数类型

  • -1:不确定
  • 0:使用当前类型
  • 1:将float提升到double
  • 2:将浮点数提升到long double

DECIMAL_DIG:用于long double序列化和反序列化时的十进制精度。简单地说,以不损失精度为前提,能够将long double转换成至少DECIMAL_DIG个十进制数字;反过来,也能将至少DECIMAL_DIG个十进制数字转换成long double

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号