不使用BigNumber进行功率计算

时间:2016-06-03 05:11:41

标签: java

如何解决以下问题?

  1. 计算没有大整数或大数的X ^ Y。
  2. 需要打印所有数字,例如2 ^ 64 = 18446744073709551616。
  3. 我用Java编写代码,但是我没有得到更高位数的确切结果。

    我的代码:

    public class Calculation {
    
        ArrayList<Double> c = new ArrayList<Double>();
        double a = 2;
        double b = 64;
        double[] d = new double[5];
    
    
        public void powerCalculation()
        {
            d[0] = java.lang.Math.pow(a, b);
            System.out.println(d[0]);
        }
    
    
        public static void main(String[] args)
        {
            Calculation calculation = new Calculation();
            calculation.powerCalculation();
        }
    }
    

1 个答案:

答案 0 :(得分:3)

double的尾数不足以容纳2^64的数字。 直截了当但很难的方法是使用像

这样的东西
ArrayList<Byte> a;

(其中a.get(x)表示位置10^x的值)并重写您在学校学到的加法,乘法和幂的算法。