float double的内存表示及比较大小的方法
2012-01-30 21:49
246 查看
参考:
float和double类型的内存分布和比较方法收藏
Comparing floating point numbers
总结几点:
0. float占4byte,精度是6~7位;double占8byte,精度是15~16位。
1. C/C++的浮点数据类型有float和double两种。它们在内存中是以科学计数法的结果来存储的。
类型float大小为4字节,即32位,内存中的存储方式如下:
类型double大小为8字节,即64位,内存布局如下:
符号位决定浮点数的正负,0正1负。
指数和尾数均从浮点数的二进制科学计数形式中获取。
2. 关于比较大小
一般情况下用一个absolute epsilon value来比较(if (fabs(result - expectedResult) < 0.00001))就够了。但是在某些对数字精度有特殊要求的domain,比如graphic,需要用更合理的方法。具体,参见引用文献2.
Comparing for equality
Comparing with epsilon – absolute error
Comparing with epsilon – relative error
float和double类型的内存分布和比较方法收藏
Comparing floating point numbers
总结几点:
0. float占4byte,精度是6~7位;double占8byte,精度是15~16位。
1. C/C++的浮点数据类型有float和double两种。它们在内存中是以科学计数法的结果来存储的。
类型float大小为4字节,即32位,内存中的存储方式如下:
符号位(1 bit) | 指数(8 bit) | 尾数(23 bit) |
符号位(1 bit) | 指数(11 bit) | 尾数(52 bit) |
指数和尾数均从浮点数的二进制科学计数形式中获取。
2. 关于比较大小
一般情况下用一个absolute epsilon value来比较(if (fabs(result - expectedResult) < 0.00001))就够了。但是在某些对数字精度有特殊要求的domain,比如graphic,需要用更合理的方法。具体,参见引用文献2.
Comparing for equality
Comparing with epsilon – absolute error
Comparing with epsilon – relative error
相关文章推荐
- float double的内存表示及比较大小的方法
- float double的内存表示及比较大小的方法
- 创建一个Fraction类(分数)实现分数的加减乘除,比较大小、约分等方法。要求:为类添加属性
- C#中时间大小的比较方法
- mysql中日期比较大小方法详解
- 虚函数列表: 取出方法 // 虚函数工作原理和(虚)继承类的内存占用大小计算 32位机器上 sizeof(void *) // 4byte
- [转]Oracle内存缓冲区合理大小的判定方法
- 普通树在线性内存中存储表示方法
- SQL Server内存数据写入磁盘的方法比较
- 比较大小的数时将第一个数设置为最大数或者最小数方法
- mysql中日期比较大小的方法
- 如何通过创建一个Fraction类(分数)来实现分数的加减乘除,比较大小、约分等方法(方法的实现部分)
- Python比较2个时间大小的实现方法
- 【Java并发编程】:并发编程中实现内存可见的两种方法比较:加锁和volatile变量
- 关于realarm S5P4418的u-boot显示内存大小问题解决方法
- 任何进制的任何数(没有大小限制)向任何进制的数的转换方法(进制原则可以任意,但是大于十表示不方便)
- java 虚拟机内存大小的调整方法
- Quiz- Win32内存表示与数值大小
- 安卓中文本和按钮大小的表示方法
- [置顶] C/C++中结构体占用内存大小的计算方法