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
,因此出现错误。
我发现这些代码片段的以下执行有点令人困惑:
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
,因此出现错误。