首页 > 其他 > 详细

剑指offer——实现Power()

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


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()

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!