| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 444 人关注过本帖
标题:哪位高手帮我看看,为什么,得到的结果总是有误差啊!
取消只看楼主 加入收藏
jipeng001
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
哪位高手帮我看看,为什么,得到的结果总是有误差啊!
#include <stdio.h>
#include <math.h>
void main()
{double i,j;
char p;
int s;
long l;


printf("Please input the formula:");
scanf("%lf%c%lf",&i,&p,&j);

switch(p)
{case '+':s=i+j;l=(i+j-s)*pow(10,6);break;
 case '-':s=i-j;l=(i-j-s)*pow(10,6);break;
 case '*':s=i*j;l=(i*j-s)*pow(10,6);break;
 case '/':if(j!=0){s=i/j;l=(i/j-s)*pow(10,6);break;}
 default: printf("error\n");
}


while(l%10==0) l=l/10;  //我是想用它把结果小数末尾中的全部去掉的//
printf("结果为%d.%ld\n",s,l);


}
搜索更多相关主题的帖子: default include double 
2011-05-05 12:42
jipeng001
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-5
收藏
得分:0 
回复 2楼 zhuzhidu784
i,j都为double型,s为int,例如i+j-s为其中的小数部分啊,然后我再用pow函数把小数部分全部转化为整数后面多出来的0,用while循环把末尾后面的0去掉,输出的时候用printf函数,前面的%d为整数后面再加一个点,后面的%d为去除末尾0的小数部分,这样就是一个完整的数据啦;不知道为什么结果老是会有误差~~
2011-05-05 21:37
快速回复:哪位高手帮我看看,为什么,得到的结果总是有误差啊!
数据加载中...
 
   



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

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