题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路:这个题就是要考虑全面。因为指数是int类型,那么指数可能是0、正整数、或者负整数。可以分为这几种情况:
1.底数为0,指数为负数,无意义
2.指数为0,返回1
3.指数为负数,返回时变为倒数
4.指数为正数,正常的次方运算
// 数值的整数次方
public class Solution {
public double Power(double base, int exponent) throws Exception {
double result = 0.0;
if (isEqual(base, 0.0) && exponent < 0) {
throw new Exception("无意义");
}
if (exponent == 0) {
return 1.0;
}
// 如果指数为正整数
if (exponent > 0) {
result = powerWithExponent(base, exponent);
} else {
// 指数为负整数
result = powerWithExponent(1 / base, -exponent);
}
return result;
}
public boolean isEqual(double num1, double num2) {
if ((num1 - num2) < 0.0000001 && (num1 - num2) > -0.0000001) {
return true;
} else {
return false;
}
}
public double powerWithExponent(double base, int exponent) {
double result = 1.0;
for (int i = 1; i <= exponent; i++) {
result = result * base;
}
return result;
}
}