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;
}
}
50. Pow(x, n)
最新推荐文章于 2024-07-09 23:43:07 发布