剑指offer-数值的整数次方

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

保证base和exponent不同时为0

思路

  • 0的0次方没有意思
  • 注意数的负数次方变成倒数
  • 任何数的0次方等于1
  • 0的负数次方是没有意义的,但是我的代码中只要base是0,就返回0,但是实际上0的负数次本质上是没有任何意义的。
  • double base判断base是否等于0时不能直接判断base==0,因为计算机中浮点数是不精确存储的,判断依据:两个数之差的绝对值小于一个很小的数,我们就能认为这个两个数相等

AC代码

#include <iostream>
#include <math.h>
using namespace std;

bool equal_zero(double a, double b)
{ //两个数之差的绝对值小于一个很小的数,我们就能认为这个两个数相等
    if (a-b < -0.000001 && a-b > 0.000001)
        return true;
    else
        return false;
}
class Solution
{
public:
    double Power(double base, int exponent)
    {
        int temp = abs(exponent);
        if (equal_zero(base, 0.0))
        {
            return 0;
        }
        double res = 1;

        for (int i = 0; i < temp; i++)
        {
            res = res * base;
        }
        if (exponent >= 0)
            return res;
        else
            return 1 / res;

    }
};

int main()
{
    Solution so;
    cout << so.Power(2, -3);
    return 0;
}
发布了29 篇原创文章 · 获赞 6 · 访问量 2021
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览