【发布时间】:2017-07-06 16:55:35
【问题描述】:
我正在使用 30 左右的阶乘!而且我无法获得很好的价值结果。我只希望它精确到 6 个有效数字,或者任何能给出合理结果的数字。目前我的代码是...
static void Main(string[] args)
{
{
int number = 30;
long fact;
factorial(number, out fact);
}
}
public static void factorial(int events, out long eventfact)
{
eventfact = 1;
for (int tt = 1; tt <= events; tt++)
{
eventfact = eventfact * tt;
}
}
这会返回结果
-8764578968847253504
这还远着呢
2.65252859812191E+32
我查看了不同类型的整数,但对于我正在处理的数字来说,似乎没有什么足够大。
任何帮助都会很棒!
【问题讨论】:
-
我想你正在寻找BigInteger。另外,考虑使用 return 语句而不是 out 参数
-
尝试使用 System.Numerics.BigInteger
-
我为提供的搜索引擎工作以寻找答案的公司 - 试一试bing.com/search?q=c%23%20factorial%20big%20number... 结果建议使用同一公司提供的库再次由同一公司以语言提供。 .(令人惊讶的是,在 Google google.com/search?q=c%23%20factorial%20big%20number 上使用类似搜索会得到非常相似的结果,而不是建议使用 Go 或其他东西 :))。