| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1784 人关注过本帖, 1 人收藏
标题:c++ 相同的数相减居然不为零(急死我了)
取消只看楼主 加入收藏
xfeng
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-6-1
收藏(1)
 问题点数:0 回复次数:3 
c++ 相同的数相减居然不为零(急死我了)
void main()
{
double a,b;
a=(0.5-0.1)/(-0.2+0.6);
b=-a/(0.2+0.6);
cout<<b+1.25;
}
程序本来很大   我把范围缩小并且简化过了
上面这个程序很easy   能口算出来   a=1  b=-1.25       cout出来的应该是0
不过大家可以把这个程序放到VC里编译一下   我的结果出来是-2.22045e-016

如果把-0.2+0.6 改为0.4   或者把0.2+0.6改成0.8   最后结果都是0
我原本的程序括号里的数都是变量

已经崩溃很久了,求教高手
搜索更多相关主题的帖子: double 
2007-11-25 20:48
xfeng
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-6-1
收藏
得分:0 
不是位数的问题
我把精度设到最小也一样
cout.precision(2);              //两位小数

另外我改成         b=-1/(0.2+0.6);           //把a直接换成1  输出就是0了

2007-11-25 21:03
xfeng
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-6-1
收藏
得分:0 
这个我试过了
确实把float就是0     不过为什么double 会出这种问题

2007-11-25 22:15
xfeng
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-6-1
收藏
得分:0 
void main()
{
                     double a=0.3/(0.6-0.3);
    double b=0.4/(0.6-0.2);
    cout<<a-1<<endl;
    cout<<b-1<<endl;
}
这个输出的结果为  
0
2.22045e-016
那为什么0.6-0.3没有损失呢?

2007-11-25 22:55
快速回复:c++ 相同的数相减居然不为零(急死我了)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017002 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved