数值的整数次方

给定一个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 }

 

posted @ 2017-04-25 20:40  fankongkong  阅读(199)  评论(0编辑  收藏  举报