永发信息网

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

答案:2  悬赏:40  手机版
解决时间 2021-02-06 19:09
  • 提问者网友:王者佥
  • 2021-02-06 07:11
先初始化一维数组array,然后输入一个四位数guess,打算检测guess与array[ ]里面的数是否相等,可是出了个问题!!!!(请对照下图来看)

这个是我的部分程序:

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

guess我输入的是1236,现在是刚执行完p的赋值那行。如图,当i=2时,temp是等于2的,可是p却等于199!!p为什么不是200??
然后我试着改了一下i的值,发现当i为偶数时,p的值都会少1 ?!求大神解答。







最佳答案
  • 五星知识达人网友:动情书生
  • 2021-02-06 07:24
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;
}
不会引入误差。
全部回答
  • 1楼网友:佘樂
  • 2021-02-06 09:03
我在想 你为什么要算p呢 直接让guess %= pow(10,i)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯