C/C++ 双精度double 数据相加出错缺陷解释

前端之家收集整理的这篇文章主要介绍了C/C++ 双精度double 数据相加出错缺陷解释前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

不知道有没有人和我一样遇到过这样一个问题,请看下面代码

#include a=,b=,c= (a+b== cout<<<< } cout<<<< }

这段代码在 VS 2012上面执行是  输出 没哦  的,也就是说里面的 2.3+1.9居然不等于4.2。

当时遇到也是百思不等其解

后来断点测试显示,在if处的a和b 的值 居然变了,增加了小数点后7~8位

最后得出的结果是,语言本身的误差,并非代码错误

解决方法是 加入 fabs函数,就可以了,0.0001是误差的范围,可以自己斟酌定义。最好用系统的 DBL_MIN,这个是最小的

#include a=,c= (fabs((a+b)-)< cout<<<< } cout<<<< }

猜你在找的C#相关文章