回 帖 发 新 帖 刷新版面

主题:哥们们,帮帮忙(浮点数累加的问题)!

为什么浮点数累加会得不到预想值?
例如,
 1==0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1
其值不为true ?

回复列表 (共2个回复)

沙发

看一下计算机组成原理这样的书,你就会明白浮点数在计算机里的存储方式了。

误差是肯定存在的,所以和浮点数比大小一般要这么比:
#define precision 1e-9
//这个精度值一般选取比较小的数

if(fabs(1 - (0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1)) < precision)
    cout << true << endl;

板凳

[quote]为什么浮点数累加会得不到预想值[/quote]
因为绝大部分的浮点数在计算机中的存放都是不精确的

我来回复

您尚未登录,请登录后再回复。点此登录或注册