50. Pow(x, n)

来源:互联网 发布:linux c gbk转utf8 编辑:程序博客网 时间:2024/05/16 05:40
 public static double myPow(double x, int n) {         double r = 1.0;         boolean isOdd = (n % 2 == 0) ? true: false;         if(x == 1.0) {             return 1.0;         }         if(x == -1.0) {             return isOdd ?1.0:-1.0;         }         boolean is = n >=0?true : false;         if(n == Integer.MIN_VALUE) {             return 0.0;         }         int tn = Math.abs(n);         double pre = 1.0;         boolean flag = false;         for(int i = 0; i < tn; i++) {             pre = r;             if(Double.isInfinite(r*x)) {                 flag =true;                 break;             }             r = r*x;             if(r == 0.0 || pre == r) {                 break;             }         }         if(flag) {             if(is) {                 return Double.POSITIVE_INFINITY;             }else {                 return 0.0;             }         }else {             if(!is) {                r = 1.0/r;             }             return r;         }     }
0 0