您的位置:

c语言pow函数强制类型转换,C语言数据类型强制转换

本文目录一览:

C语言pow函数

#includestdio.h

#includeiostream

#includemath.h

#includestring.h

using namespace std;

#define N 10

int function(char a[])

{

int i,c,sum=0;

int b[N];

c=strlen(a);

for(i=0;ic;i++)

{

if('A'=a[i]a[i]='E')

b[i]=a[i]-55;

else if('a'=a[i]a[i]='e')

b[i]=a[i]-87;

else

b[i]=a[i]-48;//因为char类型的数字0对应十进制的48,这下你就懂了吧!!!

}

coutendl;

for(i=0;ic;i++)

sum=int(sum+b[i]*pow(16,c-1-i));

return sum;

}

main()

{

char a[N];

printf("Please input a string:\n");

gets(a);

printf("%d\n",function(a));

return 0;

}

你可以试一下子,我已经再改的地方做了注释,而且,必须将char类型数字改成int型的数字,否则会产生不确定的错误!!!希望满意,给分啊亲!

C语言pow函数取整问题求大神解答。

(int)强制转成整型,如果是小数就只取整数部分。

可能有的编译器会把100保存成99.999999吧,我推测,这样只会取99,不精确。

改进办法是改成(int)(pow(10,i)+0.01).

c语言中的pow()函数怎么用

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;

}

扩展资料:

C++提供以下几种pow函数的重载形式:

double pow(double X,int Y);

float pow(float X,float Y);

float pow(float X,int Y);

long double pow(long double X,long double Y);

long double pow(long double X,int Y);

使用的时候应合理设置参数类型,避免有多个“pow”实例与参数列表相匹配的情况。

其中较容易发生重载的是使用形如:

int X,Y;

int num=pow(X,Y);

这是一个比较常用的函数,但是编译器会提醒有多个“pow”实例与参数列表相匹配。

可以使用强制类型转换解决这个问题:num=pow((float)X,Y)。

参考资料来源:百度百科-POW

c语言:pow函数出现奇异现象,求助高人!

pow函数是返回实数值的函数。

原则上说,凡是返回实数值的运算,都不保证绝对没有误差,而只是保证误差充分小。例如:相随误差的绝对值小于2的若干次方分之一,等等。

在常见的C系统中,double型的存储形式本身,只能保证分辨精度不劣于2的54次方分之一。再考虑多步计算的误差积累,有可能误差比这还大一些。

故十的二次方,得到99.999999999999……,不能算它错,因为还在误差范围以内。

用int()来强制类型转换取整,是一种只舍不入的“取整”。而99.999999……,只舍不入的“取整”得到99是很正常的。只要改用“四舍五入”取整的方式,就没有这个问题了。

如果想实现“四舍五入”的取整,可以用int(…… + 0.5),不过这种方法只适用于知道其大于零的条件下。如果有正有负的情况,就需要分情况处理。不详述了。

还有一种“四舍五入”取整输出的办法是:不做类型转换,而直接利用printf函数本身具有的舍入功能。具体是:

printf("%3.0lf\n",pow(10.0,n));

即可。

求教C语言大神,这个程序里的pow()函数的用法错了吗?

pow函数的返回值是double类型的,而你定义的j是整型的,这样会强制进行转换,把double转换为int,数据就不精确了。