码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer——实现Power()

时间:2017-03-13 22:16:30      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:power


double和float类型小数在计算机中的存储都不精确,所以如果两个数的误差很小时则认为它们相等


class PowerTest{
public:
    double Power(double base, int exp)
    {
        IsInvalied = false;
        //如果底数为0且指数小于0,则会导致1除以0,输入非法
        if (Equal(base, 0.0) && exp < 0){ IsInvalied = true; return 0;}
        else if (Equal(base, 0.0))return 0.0;

        //true表示exp为正,false表示exp为负
        bool symbol = true;
        if (exp < 0){ symbol = false; exp *= (-1); }
         double ret = PowerExp(base,exp);
        
        if (symbol == false){ ret = 1.0 / ret; }
        return ret;
    }
private:
        double PowerExp(double base,int exp)
        {
            double ret=1.0;
            while (exp>0){
                ret *= base;
                --exp;
            }
            return ret;
        }
        
        //浮点数大小的比较
    bool Equal(double num1, double num2)
    {
        if (num1 - num2 > -0.0000001&&num1 - num2 < 0.0000001)
            return true;
        else 
            return false;
    }
private:
    bool IsInvalied;//判断输入参数是否非法
};


《完》

本文出自 “零蛋蛋” 博客,谢绝转载!

剑指offer——实现Power()

标签:power

原文地址:http://lingdandan.blog.51cto.com/10697032/1906074

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!