c语言关于pow函数的一个问题

先初始化一维数组array,然后输入一个四位数guess,打算检测guess与array[]里面的数是否相等,可是出了个问题!!!!(请对照下图来看)这个是我的部分程序:... 先初始化一维数组array,然后输入一个四位数guess,打算检测guess与array[ ]里面的数是否相等,可是出了个问题!!!!(请对照下图来看)

这个是我的部分程序:

这是用Cfree5单步调试的截图:

guess我输入的是1236,现在是刚执行完p的赋值那行。如图,当i=2时,temp是等于2的,可是p却等于199!!p为什么不是200??
然后我试着改了一下i的值,发现当i为偶数时,p的值都会少1 ?!求大神解答。
展开
 我来答
金色潜鸟
推荐于2017-09-30 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5749万
展开全部
pow 函数是 double 型。是否你的编译器引入了误差。你只是处理4位数,你可以自己写 my_pow(int x):
int my_pow(int x){
int i,v=1;
if (x==0)return 1;
for (i=1;i<=x;i++) v=v*10;
return v;
}
-------------
调用:
int guess,i,temp,p;
scanf("%d",&guess);
for (i=3;i>=0;i--){
temp=guess/my_pow(i);
p =temp*my_pow(i);
guess = guess-p;
}
不会引入误差。
追问
嗯。pow 函数是 double 型,精确度引起的误差,无论怎样都会差1。已经自己写了个pow函数解决问题,谢谢。
流年市烟花
2015-05-05
知道答主
回答量:35
采纳率:0%
帮助的人:11万
展开全部
我在想 你为什么要算p呢 直接让guess %= pow(10,i)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式