剑指offer(数值的整数次方)

数值的整数次方
解题思路:
注意考虑不同的情况:
1:指数为整数,包括正整数、负整数和0;
2:对于底数为0,指数为负数 的情况,此时0作分母,要出错。。

在计算机中表示小数(包括float和double类型)都有误差,,我们不能直接用等号(==)判断两个数是否相等。。如果两个数的差的绝对值很小,比如小于0.0000001,就可以认为这两个数相等。

#include<iostream>
#include<windows.h>

using namespace std;
bool Equal(double num1,double num2)
{
    if((num1-num2>-0.00000001)&&(num1-num2<0.00000001))
        return true;
    else
        return false;
}

double Power(double base, int exponent)
{
    if(Equal(base,0.0))
        return 0.0;
    double result=1.0;
    if(exponent==0)
        result=1;
    if(exponent>0)
    {
        for(int i=1;i<=exponent;i++)
        {
            result*=base;
        }
    }
    if(exponent<0)
    {
        for(int i=1;i<=(-exponent);i++)
        {
            result*=1/base;
        }
    }
    return result;

}

int main()
{
    double a=Power(2,-3);
    cout<<a<<endl;



    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zhenaoxi1077/article/details/80374578