数值的整数次方
2017-11-08 09:22
197 查看
问题描述:实现函数double power(double base,int exponent),求base的exponent次方。不能使用库函数,同时不需要考虑大数问题
public class Power {
/*
* 问题描述: 实现函数double power(double base,int exponent),求base的exponent
* 次方。不能使用库函数,同时不需要考虑大数问题。
*/
/**
* @param args
*/
public double power(double base, int exponet) throws Exception {
double result = 0.0;
if (equals(base, 0) && (exponet < 0)) {
throw new Exception("0的负数次幂无意义");
}
if (exponet == 0) {
return 1.0;
}
if (exponet < 0) {
result = powerWithUnsignedExponent(base, -exponet);
} else {
result = powerWithUnsignedExponent(base, exponet);
}
return result;
}
private double powerWithUnsignedExponent(double base, int exponet) {
double result = 1.0;
for (int i = 1; i <= exponet; i++) {
result = result * base;
}
return result;
}
// 由于计算机中表示小数都有误差,不能用等号判断两个小数是否相等。如果两个小数的差的绝对值很小
// 我们就可以认为它们是相等的
private boolean equals(double number1, int number2) {
if ((number1 - number2 > -0.00000001)
&& (number1 - number2) < 0.00000001) {
return true;
}
return false;
}
// 写测试:把底数和指数分别设置成正数、负数、0;
public static void main(String[] args) throws Exception {
Power test = new Power();
System.out.println(test.power(2, 3));
System.out.println(test.power(2, 0));
System.out.println(test.power(2, -2));
System.out.println(test.power(0, 3));
System.out.println(test.power(0, 0));
System.out.println(test.power(0, -2));
}
}
public class Power {
/*
* 问题描述: 实现函数double power(double base,int exponent),求base的exponent
* 次方。不能使用库函数,同时不需要考虑大数问题。
*/
/**
* @param args
*/
public double power(double base, int exponet) throws Exception {
double result = 0.0;
if (equals(base, 0) && (exponet < 0)) {
throw new Exception("0的负数次幂无意义");
}
if (exponet == 0) {
return 1.0;
}
if (exponet < 0) {
result = powerWithUnsignedExponent(base, -exponet);
} else {
result = powerWithUnsignedExponent(base, exponet);
}
return result;
}
private double powerWithUnsignedExponent(double base, int exponet) {
double result = 1.0;
for (int i = 1; i <= exponet; i++) {
result = result * base;
}
return result;
}
// 由于计算机中表示小数都有误差,不能用等号判断两个小数是否相等。如果两个小数的差的绝对值很小
// 我们就可以认为它们是相等的
private boolean equals(double number1, int number2) {
if ((number1 - number2 > -0.00000001)
&& (number1 - number2) < 0.00000001) {
return true;
}
return false;
}
// 写测试:把底数和指数分别设置成正数、负数、0;
public static void main(String[] args) throws Exception {
Power test = new Power();
System.out.println(test.power(2, 3));
System.out.println(test.power(2, 0));
System.out.println(test.power(2, -2));
System.out.println(test.power(0, 3));
System.out.println(test.power(0, 0));
System.out.println(test.power(0, -2));
}
}
相关文章推荐
- 牛客网剑指offer-数值的整数次方
- 算法题目---数值的整数次方
- 《剑指offer》面试题11:数值的整数次方
- 数值的整数次方
- 剑指offer--面试题16:数值的整数次方
- 【剑指offer】面试题16:数值的整数次方
- 11 数值的整数次方
- 数值的整数次方
- 剑指Offer之面试题11:数值的整数次方
- 11、数值的整数次方
- 剑指offer-面试题11-数值的整数次方
- 利用位运算求数值的整数次方
- 数值的整数次方(剑指offer)O(log n)
- 数值的整数次方(剑指Offer 第 12 题)
- 数值的整数次方
- offer题11 数值的整数次方&判断浮点型是否相等&降低求n次方的时间复杂度&3种错误处理方式
- 剑指offer----面试题11:数值的整数次方
- 《剑指offer》-数值的整数次方
- 数值的整数次方
- 数值的整数次方