1,题目要求
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
2,题目思路
对于这道题,要求求一个double的整数次方。
单纯的计算次方比较简单,关键要考虑所有的情况。
- 当指数为负时,先求正数次方,然后求倒数即可。
- 当底数为0,指数为负,出现错误。
- double型数据不能直接用==进行比较,因为存在误差;需要利用相减计算误差来比较大小。
3,代码实现
bool isLegal = true;
const double error = 1e-10;
class Solution {
public:
double Power(double base, int exponent) {
if((base - 0.0)<error && exponent<0){
isLegal = false;
return 0.0;
}
unsigned int absExponent = exponent<0?-exponent : exponent;
double res = powerHelper(base, absExponent);
if(exponent<0)
res = 1.0/res;
return res;
}
private:
double powerHelper(double base, unsigned int exponent){
double res = 1.0;
while(exponent--){
res *= base;
}
return res;
}
};