public static void main(String[] args) {
BigDecimal result = pow(7, 77777);
}
public static BigDecimal pow(int num, int n) {
BigDecimal result = new BigDecimal(num);
if (n == 0) {
return new BigDecimal(1);
}
int m = Math.abs(n);
for (int i = 0; i < m - 1; i++) {
result = result.multiply(new BigDecimal(num));
System.out.println(num+"的"+(i+2)+"次方为:"+result.toString());
}
for (int i = 0; i < m - 1; i++) {
result = result.divide(new BigDecimal(num));
}
System.out.println("回退结果为:"+result.toString());
return n > 0 ? result : new BigDecimal(1).divide(result);
}
因为Math.pow() 方法返回值为double,某些情况结果较大的时候double会存储不下。
可以使用 BigDecimal类进行计算,其内部使用 BigInteger 范围更大