数值的整数次方

来源:互联网 发布:基金规模 知乎 编辑:程序博客网 时间:2024/05/16 14:41

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

思路:主要要考虑的是程序在特殊输入情况下的安全性,细节问题
如果底数为零,指数小于0时会出错,直接返回零
比较两个double数时,不能直接使用==,需要精度小于界限再判断相等
指数为负数时结果需要放在分母上

乘积速度还能更优化,result的4次方由2次方的result*result得到
result的8次方由4次方的result*result得到

public class Solution {    public double Power(double base, int exponent) {        boolean isValid = true;        //判断是否有效        if(equals(base,0.0) && exponent < 0){            isValid = false;            return 0.0;        }        boolean flag = false;        //记录是否为负数        if(exponent < 0){            flag = true;            exponent = Math.abs(exponent);        }        double result = calculatePower(base,exponent);        if(flag)            result = 1.0 / result;        return result;  }    //快速获得乘积    public double calculatePower(double base,int exponent){        if(exponent == 0)            return 1;        if(exponent == 1)            return base;        double result = calculatePower(base,exponent >> 1);        result *= result;        if((exponent & 1) == 1){            result *= base;        }        return result;    }    public boolean equals(double a,double b){        if(a - b < 0.00000001 && a - b > -0.00000001)            return true;        return false;    }}