题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
注意:考虑全面,指数是负数的情况,0的0次方等
public class Main {
private boolean invalidInput=false;//全局变量标记是不是0的0次方这种不合法的情况
public double Power(double base, int exponent) {
invalidInput=false;
if(equal(base, 0d) && exponent<=0){//<span style="color:#ff0000;">注意底是0时指数是0或者负数都不可以</span>
invalidInput=true;
return 0d;
}
int absExponent = Math.abs(exponent);
double res=powerWhithAbsExponent(base,absExponent);
if(exponent <0)//指数是负数时,先求正数的次方再求导
res=1d/res;
return res;
}
/**
* 计算指数是正数的情况
* @param base
* @param absExponent
* @return
*/
private double powerWhithAbsExponent(double base, int absExponent){
double res=1d;
for(int i=1;i<=absExponent;i++)
res *=base;
return res;
}
/**
* 判断两个double变量是不是相等
* @param num1
* @param num2
* @return
*/
boolean equal(double num1,double num2){
if((num1-num2) > -1e-6 && (num1-num2)<1e-6){
return true;
}else
return false;
}
public static void main(String[] args) {
Main m= new Main();
System.out.println(m.Power(2,-3));
}
}