数值的整数次方

计算的时候,如果指数是负数,则先计算他的正数,然后求结果,再最后求这个结果的倒数,就是最终答案

考虑一个特殊情况,那就是如果底数是0,指数是负数,这样按照上面办法的话,最后一步,分母会变成0,这样是非法的

代码如下

#include <iostream>
using namespace std;
bool  gInvalid=false;
double PowWithUnsignedExponent(double base,unsigned int exponent)
{
   double result=1.0;
   for(int i=1;i<=exponent;i++)
   {
      result*=base;  
   }
return result;
  
}
bool equal(double a,double b)
{

   if((a-b)>-0.00001&&(a-b)<0.00001)
	    return true;
   return false;
}
double Pow(double base,double exponent)

{
   gInvalid=false;
   //如果底数是0   指数是负数  那就应该返回错误
    
   if(equal(base,0.0)&&exponent<0)
   {
      gInvalid=true; 
	  cout<<"the base and exponet are less than 0,illegle parameter!";
      exit(1);
   }
   unsigned int absExponent=(unsigned int)exponent;
   if(exponent<0)
      absExponent=(unsigned int)(-exponent);
   double ret=PowWithUnsignedExponent(base,absExponent);
    if(exponent<0)
       ret=1.0/ret;
     return ret;

}

int main()
{

  cout<<Pow(0,-2)<<endl;
  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值