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 范围更大