double比较大小
来源:互联网 发布:sql%rowcount merge 编辑:程序博客网 时间:2024/06/05 08:38
转自http://www.cnblogs.com/taoxu0903/archive/2011/03/11/1981389.html
参考:
Comparing floating point numbers
总结几点:
0. float占4byte,精度是6~7位;double占8byte,精度是15~16位。
1. 因为double类型或float类型都是有精度的,其实都是取的近似值,所以有个误差。和一个很小的数比如0.00000001(1e-8)比较就是为了在这个误差范围内进行比较。
举个例子如double b = 0.123456可能是0.1234561的四舍五入后得到的结果。最后的0.0000001就表示误差范围了。
无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式 。
double 与 0 比较:doubel a; if ( a>-0.000001 && a< 0.000001 )对。 而 if( a == 0 )不对!
2. C/C++的浮点数据类型有float和double两种。它们在内存中是以科学计数法的结果来存储的。
类型float大小为4字节,即32位,内存中的存储方式如下:
符号位(1 bit)
指数(8 bit)
尾数(23 bit)
类型double大小为8字节,即64位,内存布局如下:
符号位(1 bit)
指数(11 bit)
尾数(52 bit)
符号位决定浮点数的正负,0正1负。
指数和尾数均从浮点数的二进制科学计数形式中获取。
3. 关于比较大小
一般情况下用一个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
- double比较大小
- Double比较大小
- java double比较大小
- double比较大小
- java double比较大小
- float double 比较大小问题
- double类型如何比较大小
- java中比较double大小
- float和double两数间比较大小
- Java之两个double 比较大小
- java中比较float和double的大小
- 在JAVA中怎么比较Double类型数据的大小?
- float double的内存表示及比较大小的方法
- java中比较float和double的大小
- Int与double的最大值的大小比较
- float double的内存表示及比较大小的方法
- 在JAVA中怎么比较Double类型数据的大小?
- java中比较两个double类型的数据大小
- zoj 1494 Climbing Worm
- 消息提示宏
- 满分通过科目三
- 【漫谈】国家征收的最高比例的税——增值税
- javascript (对象构建方式)
- double比较大小
- C
- XMPP Technologies Overview
- C++
- 如何选好Android开发书籍和教程[总结]
- qt 中文排序
- 快速排序
- SQL
- 人工智能之可行性