如何计算一个非常大的功率?例如,某些数字为1000000000000000000
幂
答案 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也无法存储如此庞大的数字。