我想计算阶乘我目前的代码是这样的:
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(string) 会将该字符串转换为大整数,但这不起作用并显示错误,而且使用常规数学错误时也存在错误。
我想使用大整数的原因是因为如果我计算12!使用 double 它以科学形式显示答案,其中 e 为我想要确切答案的东西提供动力。
最佳答案
对于使用 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;
}
关于java - 我想在我的 Android 应用程序中使用大整数,但是当我应用运算符时我会收到错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22283892/