//求a的b次方,不用考虑大数问题,不使用库函数 public static void main(String[] args) throws Exception { System.out.println(power(2.0, 3)); } private static double power(double d, int i) throws Exception{ double res; //因为double类型的数据在内存中是近似存放,所以不能用==直接比较大小 //0的负次幂没有意义 if(equal(d,0.0) && i<0){ throw new Exception("0的负次幂没有意义!"); } if(i<0){ res=1.0/powerWithI(d,-i); }else{ res=powerWithI(d,i); } return res; } private static double powerWithI(double d, int i) { double res=1.0; //如果i=0则结果为1; if(i==0){ res=1; } //如果i=1,则结果为d if(i==1){ res=d; } //i为其他值时 int k=1; while(k<=i){ res=res*d; k++; } return res; } //判断两个数是否相等 private static boolean equal(double num1, double num2) { if((num1-num2)>-0.000001 && (num1-num2)<0.000001) return true; else{ return false; } }