给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
1 public class Power { 2 public double Power2(double base, int exponent) { 3 double rs = 1.0, curr = base; 4 int n; 5 //判断指数的正负 和为0 的情况 6 if(exponent > 0){ 7 n = exponent; 8 }else if(exponent < 0){ 9 //底数为0的情况 10 if(base == 0){ 11 throw new RuntimeException("分母不能为0"); 12 } 13 n = -exponent; 14 }else{ 15 //exponent==0 16 return 1; 17 } 18 while(n!=0){//1011 依次乘以curr的1次方,2次方,8次方 19 //通过&1和>>1来逐位读取1101,为1时将该位代表的乘数累乘到最终结果 20 if((n&1)==1) 21 rs *= curr; 22 curr *= curr; 23 n = n >> 1; 24 } 25 return (exponent > 0) ? rs :(1/rs); 26 } 27 28 public static void main(String[] args) { 29 System.out.println(new Power().Power2(2,-3)); 30 } 31 }