pow 函数是 double 型。搭缺手是否你的编译器引入了误差知嫌。你只是处理4位数,你可以自己扮胡写 my_pow(int x):
创新互联公司自2013年起,是专业互联网技术服务公司,拥有项目成都网站建设、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元连江做网站,已为上家服务,为连江各地企业和个人服务,联系电话:18980820575
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;
}
不会引入误差。
从一个程序员本身乎运考虑问题方面来说:
这2个结果是不同的。
为什么?
1. c=4*10*10*10*10 = 40000
2.C= 4*POW(10,4) = 40000.00
在C与语言中,整数40000和浮点数余扒40000 在不同的系统里有不同存储方法。 另外整数和浮点数肯定是不同的。
所以,请注意数据类型
另外,楼上的为什么说都是一样呢?岁毁梁
请注意看:
int main(int argc, char *argv[])
{
float c = 4 * pow(10,4); // POW 函数,而且前面是float型
int x = 10, y = 4;
float z;
z = 4 * pow(x,y); // 同样是POW函数,而且前面也是float型,
//所以楼上根本没有从本质上帮助你,而且会误导你。
printf("%f\n%f\n", c, z);
return 0;
}
pow()函数用来求x的y次幂,x、y及函数值都是double型 ,其原型为:double pow(double x, double y)。
实渗陆例代码如下:
#includestdio.h
#includemath.h
void main()
{
double x = 2, y = 10;
printf("%f\n",pow(x, y));
return 0;
}
扩展资料:
在调用pow函数时,可能导致错误的情况:
如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error错误。
如果底数 x 和指数 y 都是 0,可能会导致 domain error?错误,也可能没有;这跟库的实现有关。
如果底数 x 是 0,指数 y 是负数,可能会导致?domain error 或pole error 错误,也可能没有丛圆顷;这跟库的实现有关。
如果返回值 ret 太大或者太小,将会导致range error 错误。
错误代码:
如果发生 domain error 错误,那么全局变量 errno 将被设置为 EDOM;
如果腔郑发生 pole error 或 range error 错误,那么全局变量 errno 将被设置为 ERANGE。
参考资料:
pow函数——百度百科