我必须为我大学的一个项目计算11^16.不知何故,Math.pow(11,16)
计算出的解比WolframAlpha或我的其他计算方法精确1.
我的代码是:
public class Test {
public static void main(String args[]) {
long a = 11;
long b = 16;
System.out.println("" + (long)Math.pow(a, b));
System.out.println("" + squareAndMultiply(a, b));
}
public static long squareAndMultiply(long b, long e){
long result = 1;
long sq = b;
while(e>0){
if(e%2==1){
result *= sq;
}
sq = sq * sq;
e /= 2;
}
return result;
}
}
代码的结果是:
数学pow(11,16):
45949729863572160
平方和倍数(11,16):
45949729863572161