C陷阱与缺陷-浮点数和0比较
2018-03-28 13:05
239 查看
C语言中浮点数同0不能直接用==比较,只能看浮点数与0值的误差,原因如下:
float是浮点数,存的是近似值,当用来表示0的时候,有可能计算结果是0,但是由于精度问题,实际上存储的是一个和0很接近的值,而==做判断的话只要不是完全相等就返回假,所以用==判断float有可能出错。
解决方法是定义一个宏作为精度比较
这样就OK了,同样的道理,浮点数与其他整数比较时也不能直接使用==号,而在是一定的精度范围内进行大小比较!
float是浮点数,存的是近似值,当用来表示0的时候,有可能计算结果是0,但是由于精度问题,实际上存储的是一个和0很接近的值,而==做判断的话只要不是完全相等就返回假,所以用==判断float有可能出错。
解决方法是定义一个宏作为精度比较
这样就OK了,同样的道理,浮点数与其他整数比较时也不能直接使用==号,而在是一定的精度范围内进行大小比较!
相关文章推荐
- 两个浮点数比较明明相等为啥还是会进if条件啊
- C语言的陷阱与缺陷
- C陷阱与缺陷(五)库函数
- 计算机经典书籍系列1-C陷阱与缺陷2
- 浮点数的陷阱 转载自(taesimple)
- 浮点类型 比较特别的操作,取整和不四舍五入
- 浮点数的大小比较为什么不能用等号?
- 浮点数非精确数,作比较运算时需谨慎!
- [搬家前]缺陷管理工具的比较
- C陷阱与缺陷中提出的问题。
- C陷阱与缺陷(小结2)
- 看C陷阱与缺陷的一点收获
- PHP浮点比较大小的方法
- C陷阱与缺陷学习笔记
- PHP哈希弱类型比较的缺陷
- C陷阱与缺陷 —— 读书笔记-2、语法“陷阱”
- 《c陷阱和缺陷》笔记--C编译器的注释嵌套
- C陷阱与缺陷
- double等浮点数比较问题,eps
- C语言缺陷与陷阱 (二)