我想计算阶乘,我目前的代码就是:
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提升为我需要确切答案的东西。
答案 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;
}