gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:18:17 25 4
gpt4 key购买 nike

我想计算阶乘我目前的代码是这样的:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com