刚刚看别人的博客,讨论x的y次方问题,自己小试了一下,和math.h的pow(x,y)相差在小数点后7位,大家可以一试别的好的方法。
double CMathtestDlg::nuaa_pow(double x,double y)
{
//*****************************************//
//x必须>0
//*******************************************
int i;
double yy,z;
if(x>0)
x=nuaa_log(x);
else
return 0;
yy=1;
z=1;
i=1;
do
{
z=z*x*y/i;
yy=yy+z;
i=i+1;
} while(z>1e-6||-1e-6>z);
return yy;
}
还在想x如果其他值呢?可以这样一试:
double CMathtestDlg::nuaa_pow(double x,int y)
{
int i,sign=1;
double yy,z;
if(x>0)
x=nuaa_log(x);
else if(x<0)
{
x=nuaa_log(-x);
if((y&1)==0)//判断y是奇数还是偶数
sign=1;
else
sign=-1;
}
else
return 0;
yy=1;
z=1;
i=1;
do
{
z=z*x*y/i;
yy=yy+z;
i=i+1;
} while(z>1e-6||-1e-6>z);
return yy*sign;