为什么两个float类型的数值不能直接相等
来源:互联网 发布:python足彩大数据分析 编辑:程序博客网 时间:2024/05/17 06:13
在判断两个浮点数 a 和 b 是否相等时,不要用 a==b,应该判断二者之差的绝对值fabs(a-b) 是否小于某个阈值,例如 1e-9。
参考: http://blog.csdn.net/turkeyzhou/article/details/2755970
概括:
原因在于计算机在内存表示float的时候都是有误差的
最后,有一个往往高手也汗颜的地方,一定要记住,浮点数没有无符号型的usinged float/double是错误的.
你查一下符点数存储标准IEEE754就知道了!符点数是采用二进制科学计数法来进行存储的,因此,绝大多数的数在计算机中是不能 精确 表示的。如果两个数a b都是常数赋值,这样比较,应该不会有问题,如:double a=5.3,b=5.3;if ( a == b ){printf("a=b\n");}这时会输出a=b如果a或b是经过运算后得到的值,这时就不一定是一个精确的你想要的值了,如:double b=2.6+2.7,a=5.3;if ( a == b ){printf("a=b\n");}这时就不一定能输出a=b了!
0 0
- 为什么两个float类型的数值不能直接相等
- 探讨float类型的数值,为什么两个float不能直接相等
- 探讨float类型的数值,为什么两个float不能直接相等
- 探讨float类型的数值,为什么两个float不能直接相等
- 为什么Float类型不能直接相等
- 判断两个float类型数据是否相等
- 两个 Long 类型为什么不能直接用==比较
- 为什么两个不确定值的浮点数无法直接比较是否相等
- 解决两个float类型的数值相减,精确度不准确的问题
- 关于为什么整型不能和float,double型直接比较大小的原因
- PHP里两个相等的float类型的数字相减不等于0,而等于3.5527136788005E-15
- 8086cpu为什么不能将数值直接送入段寄存器
- 既然float不能表示所有的int_那为什么在类型转换时C++将int转换成float?
- Float类型之间是不能够取余的
- 为什么标准C++中两个直接字符串常量不能相加
- 判断两个float或double是否相等
- 判断两个float或double是否相等
- ORACLE数值类型的性能优化技巧number,Int,float
- 缓存技术PK:选择Memcached还是Redis?
- 【转】计算机视觉基础2——相机成像的几何描述
- 【HTML5+CSS3开发实战】第2章 初识HTML5
- 自定义类似RadioButton的单选、多选的ListView
- cpu亲和力总结taskset和setcpu及其他相关
- 为什么两个float类型的数值不能直接相等
- Altium Designer格式原理图怎样转换成OrCAD格式
- 滚动view的嵌套。
- Bitmap与BitmapFactory.Options
- block----
- 项目实战之中小网站数据缓存的设计与实现
- AudioSession/AudioCaptureSession的分析与使用
- UITableView 以及 UITableViewCell 的重用机制
- 63 change事件监控raido选中效果