主题:哥们们,帮帮忙(浮点数累加的问题)!
lxclinton
[专家分:0] 发布于 2006-10-17 15:21:00
为什么浮点数累加会得不到预想值?
例如,
1==0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1
其值不为true ?
回复列表 (共2个回复)
沙发
argentmoon [专家分:13260] 发布于 2006-10-17 18:11:00
看一下计算机组成原理这样的书,你就会明白浮点数在计算机里的存储方式了。
误差是肯定存在的,所以和浮点数比大小一般要这么比:
#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;
板凳
boxertony [专家分:23030] 发布于 2006-10-18 09:18:00
[quote]为什么浮点数累加会得不到预想值[/quote]
因为绝大部分的浮点数在计算机中的存放都是不精确的
我来回复