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等。
C 标准库系列之float.h的更多相关文章
- C 标准库系列之locale.h
locale.h 区域设置相关,主要针对时间日期.货币格式.字符控制.数字格式等以满足某区域的设置需要. locale设置类别主要包括以下几个宏定义的类别: LC_ALL:设置所有的类别: LC_CO ...
- C 标准库系列之errno.h
errno.h 提供了一个整数全局变量errno,当系统调用或者库函数的错误事件发生时可能会修改该值,指明错误的原因,该值可在任何需要的地方被修改:一般情况不为0的值表示出现了异常或者错误. errn ...
- C 标准库系列之assert.h
先简单介绍一下<assert.h>头文件,该头文件的目的便是提供一个宏assert的定义,即可以在程序必要的地方使用其进行断言处理:断言在程序中的作用是当在调试模式下时,若程序给出的前提条 ...
- C 标准库系列之limits.h
limits.h 类似于float.h,其定义了一些列类型的值的范围.限制值,也就是说该类型的值不可以大于该上界或者小于该类型值的下界: glibc中宏定义了一下的值: # define MB_LEN ...
- C 标准库系列之ctype.h
ctype.h 主要提供了一些函数用以测试字符或字符处理的功能函数:包括字符判断检测.字符转换: 目前ASCII字符可分为以下一些类型,如:大写.小写.字母.数字.十六进制.空白字符.可打印字符.控制 ...
- C 标准库系列之概述
基本上很多编程语言都会提供针对语言本身的一系列的标准库或者包,当然C语言同样也有提供标准库,C语言的标准库是一系列的头文件的集合:如assert.h.ctype.h.errno.h.float.h.l ...
- 《C标准库》——之<ctype.h>
在没读<ctype.h>的源码之前,我一直以为我们平时用的isalnum.isdigit.isalpha等这些函数,是靠判断写出来的. 比如: int isdigit(int c){ re ...
- 《C标准库》——之<stddef.h>
<stddef.h>,顾名思义,就是标准定义.C语言里这个标准库里定义了一些类型,和宏定义. <stddef.h>的内容: 类型: ptrdiff_t : 是两个指针相减的结果 ...
- 《C标准库》—之<assert.h>实现
首先,贴出标准库中<assert.h>的实现源码: #undef assert #ifdef NDEBUG #define assert(test)((void)0) #else void ...
随机推荐
- js正则匹配过滤 特殊字符
function stripscript(s) { var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<& ...
- asp.net core输出中文乱码的问题
摘要 在学习asp.net core的时候,尝试在控制台,或者页面上输出中文,会出现乱码的问题. 问题重现 新建控制台和站点 public class Program { public static ...
- 用R去做文本处理
数据说明 这是一份爬好的数据,data.frame格式.包括一些招聘信息,具体的列名和含义如下所示: 职位名称(occ_name)清洗 预览 清洗策略 需要去除无关的信息,比如符号以及数字信息 实现 ...
- Java ClassLoader 原理详细分析(转)
转载自:http://www.codeceo.com/article/java-classloader.html 一.什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管 ...
- [Storm] Storm与asm的恩恩怨怨
asm的引用冲突 1. Jersey & Storm 0.9.3 jersey 1.8 (which depends on asm 3.0) Storm 0.93 (which depends ...
- 3D游戏编程大师技巧──环境搭建
刚开微博,想借助这个平台与大家交流,写下自己的学习记录,希望得到大家的批评指正. 好了,进入主题.这段时间对游戏编程很感兴趣,于是在网友的推荐下开始学习<3D游戏编程大师技巧>这本书.今天 ...
- SEO之title优化
作者:andyrat,联系方式:andyrat@qq.com
- Java Native Interface 五 JNI里的多线程与JNI方法的注册
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 JNI里的多线程 在本地方法里写有关多线程的 ...
- instanceof运算符
instanceof运算符:判断该对象是否是某一个类的实例. 语法格式:boolean b = 对象A instanceof 类B://判断A对象是否是B类的实例,如果是返回true. 若对象是类的实 ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...