是我,还有另一个问题。
我需要计算一个非常大的阶乘,假设它是95。 因此众所周知 95!等于:
10329978488239062144133688859495761720042551046933218543167809699858950620982142410696539365993509132394773015015046346326526558958953528454377577119744
我使用了一个简单的方法,该方法使用几个月前在附近发现的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方法进行加法,乘法等,希望它可以解决问题-仍然没有用。
不幸的是,我最后尝试使用的是更聪明的人的代码
Microsoft.SolverFoundation.Common.BigInteger.Factorial(95)
仍然返回四舍五入的数字。
我缺少什么可以让我得到正确结果的东西吗?我真的希望BigIntegers不会像那样失去精度。