数值的整数次方

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
考虑的几种情况:
1. base和0的大小
2.exponent是否为负数
class Solution {
public:
    bool isequal(double num1,double num2)  
{  
    if(num1-num2<0.0000001&&num1-num2>-0.0000001)  
        return true;  
    else  
        return false;  
  
}  
//计算正指数的整数次方  
double PowerWithUnsignedExponent(double base,unsigned int exponent)  
{  
    double result=1.0;  
    unsigned int i;  
    for(i=1;i<=exponent;++i)  
        result*=base;  
    return result;  
}  
//利用乘方性质计算整数次方  
double PowerWithUnsignedExponent2(double base,unsigned int exponent)  
{  
    if(exponent==0) return 1;  
    if(exponent==1) return base;  
  
    double result=PowerWithUnsignedExponent2(base,exponent>>1);  
    result*=result;  
    if((exponent&0x1)==1)//指数为奇数  
        result*=base;  
  
    return result;  
}  
  
   bool g_InvalidInput=false;//使用全局变量处理错误  
double Power(double base, int exponent) {
  if(isequal(base,0.0)&&exponent<0)  
  {  
    g_InvalidInput=true;  
    return 0.0;  
  }  
  unsigned int absExponent=(unsigned int) (exponent);
  if(exponent<0)  
  absExponent=(unsigned int) (-exponent);  
  
  double result=PowerWithUnsignedExponent2(base,absExponent);  
  
  if(exponent<0)  
    result=1.0/result;  
  return result;  
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值