<cfloat> (float.h)
头文件:
<cfloat> (float.h)
浮点类型的特性
这个头文件为特殊系统和编译器的实现描述了浮点类型的特征.
一个浮点数包含四个元素:
- 一个标志(a sign):正或负;
- 一个基数(a base):这表示一串不同的数字能够被一个个单一的数字所表示(2 就是二进制(binary),10就是十进制(decimal),16就是十六进制(hexadecimal)...);
- 一个有效数(a significand):这是一系列前面所谈到的基数的数字,在这一系列中数字的位数就是众所周知的精度;
- 一个指数(an exponent):它代表着有效数字的偏移量,用下面的方式影响着其值:
宏常量
下面的表格显示了这个头文件中定义的不同的变量的名称和所有实现的最小值最大值
(具体的实现可能有的值比这个大或者小 按照说明):
当一组宏存以FLT_,DBL_和LDBL_为前缀时,以FLT_开头的适用于float,以DBL_开头的适用于double,以LDBL_开头的适用于long double;
名称 | 值 | 代表 | 表示 |
FLT_RADIX | 2或者更大 | 基数 (radix) | 所有浮点数类型的基数 |
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 |
最小的指数 | 用于生成一个标准化的浮点数指数的最小负整数值 | |
FLT_MIN_10_EXP DBL_MIN_10_EXP LDBL_MIN_10_EXP |
-37 或者更小 -37 或者更小 -37 或者更小 |
最小以10为基数的指数 |
用于生成一个标准浮点数的十进制指数表达式 的最小负整数 |
FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP |
最大的指数 | 用于生成一个标准化的浮点数指数的最大整数值 | |
FLT_MAX_10_EXP DBL_MAX_10_EXP LDBL_MAX_10_EXP |
37 或者更大 37 或者更大 37 或者更大 |
最大以10为基数的指数 |
用于生成一个标准浮点数的十进制指数表达式 的最大整数 |
FLT_MAX DBL_MAX LDBL_MAX |
1E+37 或者更大1E+37 或者更大1E+37 或者更大 |
最大数 | 表示最大有限的浮点数 |
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 或者更小 |
最小数 | 表示最小有限的浮点数 |
FLT_ROUNDS | 舍入方式 |
舍入行为,可能的值: -1:未确定的 0:向0舍入 1:四舍五入 2:向正无穷 3:向负无穷 *适用于所有浮点类型(float,double和long double) |
|
FLT_EVAL_METHOD | 赋值方式 |
赋值格式的属性,可能的值: -1:未确定的 0:赋值类型的范围和精度 1:赋值时将float和double当作double, long double 当作long double 2:赋值时所有都当作long double,其它负数都表示为实现的定义(implementation-defined)行为 *适用于所有浮点类型 |
|
DECIMAL_DIG | 小数精度 |
可以将一个十进制数转化一个浮点类型的数字, 并且再次转为到与原来一样的数字时不丢失精度 |
通用性
FLT_EVAL_METHOD 和DECIMAL_DIG 是在符合C99标准的库中定义的或者只在符合C11的库中
请参阅
<climits> (limits.h) 整数类型的大小
/*
第一次修改时间:2016年1月30日 20:32:35
*/
<cfloat> (float.h)的更多相关文章
- C 标准库系列之float.h
float.h 内部主要包含了一系列的浮点数宏.指明可移植程序必要的常量:浮点数格式一般为Spxbe;其中S表示+-:p表示底数.b表示基数如2.8.10.16等进制,e为指数标识E或e: 在一般情况 ...
- <limits.h>和<float.h>
头文件<limits.h>中定义了用于表示整类型大小的常量.以下所列的值是可接受的最小值,实际系统中可能有更大的值. CHAR_BIT char类型的位数 CHAR_MAX UCHAR_M ...
- <math.h>与<float.h>
(一) <math.h> <math.h>文件中已经定义了M_PI,如下所示,用户可以直接使用: //math.h........................ #if de ...
- Standard C 之 math.h和float.h
对于C Standard Library 可以参考:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/ 或者 http://www.cplusplus.c ...
- C 标准库 - <float.h>
C 标准库 - <float.h> 简介 C 标准库的 float.h 头文件包含了一组与浮点值相关的依赖于平台的常量.这些常量是由 ANSI C 提出的,这让程序更具有可移植性.在讲解这 ...
- float.h
float.h 一背景知识 浮点算术非常复杂 很多小的处理器在硬件指令方面甚至不支持浮点算术 其他的则需要一个独立的协处理器来处理这种运算 只有最复杂的计算机才在硬件指令集中支持浮点运算 ...
- <float.h>中DBL_TRUE_MIN的定义和作用
搬运自己2016年11月22日于SegmentFault发表的文章.链接:https://segmentfault.com/a/1190000007565915 在学习C Prime Plus的过程中 ...
- C 标准库系列之limits.h
limits.h 类似于float.h,其定义了一些列类型的值的范围.限制值,也就是说该类型的值不可以大于该上界或者小于该类型值的下界: glibc中宏定义了一下的值: # define MB_LEN ...
- float 浮点数与零值0比较大小
float x: 千万不要写x==0; 写出float x 与“零值”比较的if语句——一道面试题分析 写出float x 与“零值”比较的if语句 请写出 float x 与“零值”比较的 if ...
随机推荐
- logback配置详解和使用
最近知道一种打印日志的新方法,在此做一下学习总结. 转自:行走在云端的愚公 https://www.cnblogs.com/warking/p/5710303.html 一.logback的介绍 ...
- 内存修改之IOS版ce
开源工具,算法全部在内存中完成,速度比bmsq,igg快,直接搜索0也是无压力.使用c++编写,有一定的扩展能力,可以自己扩展value type和comparator. 项目地址: https:// ...
- ListView 中嵌套 GridView
1.主布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...
- C语言中内存分配
C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要.在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的.因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题. 第1节主要 ...
- vue 方法相互调用注意事项与详解
vue在同一个组件内: methods中的一个方法调用methods中的另外一个方法: 可以直接这样调用:this.$options.methods.test(); this.$options.met ...
- unittest单元测试框架之测试结果输出到外部文件(四)
1.test_suit执行测试用例及输出结果前 添加如下代码(打开会新建d:/result.txt文件): with open("d:\\result.txt","a&q ...
- JAVA数据类型能串门不?
JAVA这几种数据类型,能否串门?入了人家门,就得按人家规矩来,入乡随俗哦,难免发生有自觉的 还有不情愿被动的. 自动类型转换 自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型.在图中,黑 ...
- Web—02-轻松理解css
CSS基本语法以及页面引用 CSS基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个 ...
- 如何编写及运行JS
JS也是一种脚本语言,他可以有两种方式在HTML页面进行引入,一种是外联,一种是内部. 外联JS的写法为: <script src="相对路径"></ ...
- ubuntu8.04下mysql更改用户和密码
1.最近由于系统原因重装了mysql,但是发现安装过程中没有提示设置密码. 2.修改用户名和密码步骤 A.service mysql stop #停止mysql服务 B.sudo vim /et ...