如何计算大指数?

时间:2016-03-30 22:35:06

标签: c# vb.net

如何计算一个非常大的功率?例如,某些数字为1000000000000000000

2 个答案:

答案 0 :(得分:2)

对于超出Int64范围的大数,.NET具有BigInteger类,其中"表示任意大的有符号整数"。当然,在实践中,BigInteger可以表示的值受可用系统内存和CLR分配所有内存的能力的限制。

理论上你可以做这样的事情,但实际上你很可能在你到达BigInteger.Pow(value, int.MaxValue)之前就已经没有记忆了。

var value = new BigInteger(x);
var result = BigInteger.Pow(value, 1000000000);
result = BigInteger.Pow(result, 1000000000);

请注意,由于BigInteger.Pow对第二个参数采用常规int,因此您需要两次(或更多次)调用来计算大于int范围内的功率

也就是说,了解使用BigInteger的操作比使用常规数字类型的数学操作慢得多也很重要,因此您应该仔细考虑您的总体目标是什么以及是否存在在不诉诸BigInteger的情况下完成它的方法。

答案 1 :(得分:0)

C#中没有数据类型可以存储像pow(值,1000000000000000000)这样的值(除非值为1:P) 即使是BigInteger也无法存储如此庞大的数字。