题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
代码实现
public class Solution {
public double Power(double base, int exponent) {
//首先考虑底数为0的特殊情况
if(equal(base,0))
return exponent <= 0 ? -1 : 0;
//其次考虑指数
else {
double result = 1.0;
for(int i = 1;i <= Math.abs(exponent);i++){
result *= base;
}
//若指数为负 则对result取倒数
if(exponent < 0)
result = 1.0/result;
//否则直接返回result
return result;
}
}
//判断两个小数是否相等
public boolean equal(double d1,double d2){
return (d1 - d2 > -0.0000001) && (d1 - d2 < 0.0000001) ? true : false;
}
}
主要思路
1、由于计算机表示小数都有误差,我们不能直接用==判断两个小数的大小,如果两个小数的差的绝对值很小,比如小于0.0000001,就可以认为它们相等
2、题目本身不难但容易出错,主要考查思维的全面性吧