gpt4 book ai didi

c# - 使用 BigIntegers 的大阶乘失去精度

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:28 24 4
gpt4 key购买 nike

是我,有另一个问题。

我需要计算一个非常大的数的阶乘,假设它是 95。众所周知,95! 等于:

10329978488239062144133688859495761720042551046933218543167809699858950620982142410696539365993509132394773015016946331626553858953528454377577119744

几个月前我在附近的某个地方找到了一种使用 BigIntegers 计算阶乘的简单方法:

public static BigInteger FactorialTest(BigInteger x)
{
if (x == 0)
return 1;

BigInteger res = x;
x--;
while (x > 1)
{
res *= x;
x--;
}
return res;
}

并且只得到一个四舍五入的数字:

10329978488239059262599702099394727095397746340117372869212250571234293987594703124871765375385424468563282236864226607350415360000000000000000000000

下一步是使用内置的 BigInteger 方法进行加法、乘法等操作,希望它能解决问题——还是不行。

我尝试的最后一件事是使用更聪明的人的代码,不幸的是达到了 SolverFoundation

Microsoft.SolverFoundation.Common.BigInteger.Factorial(95)

仍然返回向上舍入的数字。

有什么我遗漏的东西可以让我得到正确的结果吗?我真的希望 BigIntegers 不会像那样失去精度。

最佳答案

根据 http://2000clicks.com/MathHelp/BasicFactorialTable.aspx和其他网站,您从计算中得到的数字是正确的。

关于c# - 使用 BigIntegers 的大阶乘失去精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51982534/

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