劍指offer之 數值的整數次方
阿新 • • 發佈:2017-10-12
light exc sig 整數次方 ase 負數 dexp ret throw
問題描述:實現函數double power(double base,int exponent),求base的exponent次方。不能使用庫函數,同時不需要考慮大數問題。
package Problem11; 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; }
劍指offer之 數值的整數次方