我发现以下执行这些代码片段有点令人困惑:
BigInteger result = BigInteger.Pow(1000, 1000);
这将编译没有错误但是这个不会:
BigInteger result = (BigInteger)Math.Pow(1000, 1000);
BigInteger.Pow()
和Math.Pow()
的实施之间的区别是什么?在这两种情况下,我们都是using System.Numerics
。
第二个抛出 OverflowException BigInteger不能代表无穷大。
答案 0 :(得分:6)
1000^1000
超出了double
的范围,因此当您致电Math.Pow(1000,1000)
时,它会返回double.PositiveInfinity
。
您无法将double.PositiveInfinity
分配给BigInteger
,因此会出错。