加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:43:35 所属栏目:百科 来源:网络整理
导读:不知道有没有人和我一样遇到过这样一个问题,请看下面代码。 #include a= ,b= ,c= (a+b== cout } cout } 这段代码在 VS 2012上面执行是? 输出 没哦? 的,也就是说里面的 2.3+1.9居然不等于4.2。 当时遇到也是百思不等其解 后来断点测试显示,在if处的a和b 的

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

#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<<<< }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读