double比较大小
来源:互联网 发布:jquery 获取input数组 编辑:程序博客网 时间:2024/06/14 18:15
转自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就表示误差范围了。
<span style="color: rgb(51, 51, 51);">无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式 。</span>
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
0 0
- 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类型的数据大小
- [科普文] 什么是网络流量劫持?揭秘详解黑客劫持的攻击手段与防御方法 (一)
- 几种加密算法
- xUtils中的HttpUtils全面注释
- 最笨的方法解决 使用Snappy 压缩方式报错“java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path”
- postgresql流复制配置
- double比较大小
- HTTP请求返回状态码详解
- hihoCoder (1223 : 不等式)
- Web服务器的工作原理
- 根据Uri获取图片绝对路径,解决Android4.4以上版本Uri转换
- [持续更新]HTML5学习笔记(一)
- mybatis学习教程(三)mybatis映射开发规范
- 数学记号
- 数据结构 3 栈和队列