数值的整数次方

来源:互联网 发布:模拟人生2数据丢失 编辑:程序博客网 时间:2024/05/18 18:15

题目:实现函数double Power(double base,int exp),求base的exp次方。不得使用库函数,同时不需要考虑大数问题。
这道题本身难度不大,但有些细节需要注意。

由于题目已经给出了返回值呵参数中的double型,所以在进行判0的时候,就不能再用if(base == 0)这样的处理,而要使用浮点数的判0处理。
再者,exp是整型,所以有可能是0或负数,这些都是需要特殊处理的地方。

基于以上分析,我们给出如下代码:

//浮点数的比较大小bool equal(double num1, double num2){    if ((num1 - num2 > -0.00000001) && (num1 - num2 < 0.00000001))        return true;    else        return false;}double PowerExp(double base, unsigned int exp){    double result = 1.0;    for (int i = 1; i <= exp; i++)    {        result *= base;    }    return result;}//数值的整数次方bool g_invalidInput = false;double Power(double base, int exp){    g_invalidInput = false;    //注意先判断合法性    if (equal(base, 0.0) && exp < 0)    {        g_invalidInput = true;        return 0.0;    }    //当指数小于0时要进行特殊处理    unsigned int absExp = (unsigned int)(exp);    if (exp < 0)        absExp = (unsigned int)(-exp);    double result = PowerExp(base, absExp);    if (exp < 0)        result = 1.0 / result;    return result;}int main(){    double ret = PowerExp(2, 5);    cout << ret << endl;    system("pause");    return 0;}
原创粉丝点击