我想在我的Android应用程序中使用大整数但是当我应用运算符时我得到错误?

时间:2014-03-09 15:09:52

标签: java android biginteger

我想计算阶乘,我目前的代码就是:

else if(btn.getText().equals("x!"))
    {
        double LeftVal = Double.parseDouble(currentInput);
        double result = Double.NaN;
        if(currentInputLen > 0 && LeftVal >0)
        {
            result = Factorial(LeftVal);
        }

        resultText.setText(result+"");
    }

计算阶乘的代码是:

private double Factorial(double input)
{
    double output=input;
    for(int i=(int) (input-1);i>0;i--)
    {
        output*=i;
    }

    return output;
}

我导入了java.math。*;并将我的代码更改为:

else if(btn.getText().equals("x!"))
    {
        BigInteger LeftVal = BigInteger(currentInput);
        BigInteger result = 0;
        if(currentInputLen > 0 && LeftVal >0)
        {
            result = Factorial(LeftVal);
        }

        resultText.setText(result+"");
    }

和这个

的因子方法
private BigInteger Factorial(BigInteger input)
{
    BIgInteger output=input;
    for(int i=(int) (input-1);i>0;i--)
    {
        output*=i;
    }

    return output;
}

我在Android开发者网站上看到,BigInteger(字符串)会将该字符串转换为大整数,但这不起作用,并且显示错误,使用常规数学错误也存在错误。

我想使用大整数的原因是因为如果我计算12!使用双倍它显示科学形式的答案与e提升为我需要确切答案的东西。

1 个答案:

答案 0 :(得分:0)

对于使用BigInteger的阶乘方法,您可以使用:

private BigInteger factorial(BigInteger input) {
    BigInteger output = input;
    for (BigInteger i = input.subtract(BigInteger.ONE); i.compareTo(BigInteger.ZERO) > 0; i = i.subtract(BigInteger.ONE)) {
        output = output.multiply(i);
    }
    return output;
}