• C 标准库系列之float.h


      float.h 内部主要包含了一系列的浮点数宏、指明可移植程序必要的常量;浮点数格式一般为Spxbe;其中S表示+-;p表示底数、b表示基数如2、8、10、16等进制,e为指数标识E或e;
    在一般情况下可以直接使用该头文件中宏定义的值。

      glibc下没有专门针对float.h的文件,其一般以stdlib.h或者其他文件替代。

      微软的float.h提供了各个浮点数宏,包括要求的最大值、最小值、精度等,其中以DBL开头的宏表示double类型,FLT开头的则float类型的,此外还有LDBL开头的,即long double类型
    在不同平台或处理器下可能有不同的值范围,比如#define DBL_MAX 1.7976931348623158e+308,#define FLT_MAX 3.402823466e+38F,#define DBL_DIG 15,#define FLT_DIG 6分别为双精度和单精度浮点数最大值,以及双精度和单精度的有效位为15位、6位,在一般的应用中单精度便足够了并且节省内存占用。

      微软还提供了获取或者改变浮点控制字的几个函数,如_controlfp、_clearfp、_set_controlfp、_statusfp、_fpreset等,这些函数控制字使程序能够根据不同的平台改变精度,舍入;
    __fpecode:获取浮点错误信号、返回码,其以_FPE_XXX开头的宏定义值,比如_FPE_INVALID无效值、_FPE_OVERFLOW溢出值:此外也提供了IEEE 推荐的函数,这些函数参数针对double类型;
      如:
      double _copysign(double x,double y):以第二个参数的正负符号返回第一个参数x的值;
      double _chgsign(double x):返回该数值的正负号变换后的值(正变为负,负变为正);
      double _scalb(double x,double y):以2的幂缩放自变量,即返回值为x * 2的y次方;
      double _logb(double x):返回x值的2为底数的指数值;如_logb(8.0)返回3.0
      double _nextafter(double x,double y):返回x在y方向上可以表示的最接近的数值,若x等于y,则返回y;
      int _finite(double x):判断x是否为有效浮点数,比如非无穷大的,当x为infinite或者NaN时返回false(0),否则返回true(非0值);
      int _isnan(double x):判断x是否为非数值;若非数值则返回true(非0),否则返回false(0);
      int _fpclass(double x):返回浮点数值的类型,这些返回值被以_FPCLASS_XXX宏定义的值。

      glibc中也有提供IEEE 推荐的函数,不过函数命名不同且存放在math.h文件中,形如:isnan、isinf、isnormal、isfinite、fpclassify、copysign、scalb、logb等。

  • 相关阅读:
    Python中的BeautifulSoup模块
    requests模块
    requests模块
    python中让输出不换行
    python中让输出不换行
    我为Dexposed续一秒——论ART上运行时 Method AOP实现
    Python2中的urllib、urllib2和 Python3中的urllib、requests
    Python2中的urllib、urllib2和 Python3中的urllib、requests
    Fidder抓包软件的使用
    Fidder抓包软件的使用
  • 原文地址:https://www.cnblogs.com/haomiao/p/6128861.html
Copyright © 2020-2023  润新知