BigInteger.Pow() 和 Math.Pow() 有什么区别?

What's the difference between BigInteger.Pow() and Math.Pow()?

我发现这些代码片段的以下执行有点令人困惑:

BigInteger result = BigInteger.Pow(1000, 1000);

这将编译没有错误但是这个不会:

BigInteger result = (BigInteger)Math.Pow(1000, 1000);

BigInteger.Pow()Math.Pow()的实现有什么不同。在这两种情况下,我们都是 using System.Numerics.

第二个抛出OverflowException BigInteger cannot represent infinity.

1000^1000 超出了 double 的范围,因此当您调用 Math.Pow(1000,1000) 时 returns double.PositiveInfinity.

您无法将 double.PositiveInfinity 分配给 BigInteger,因此出现错误。