BigInteger.Pow()和Math.Pow()之间的区别是什么?

时间:2016-04-18 15:20:12

标签: c# numeric

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

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

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

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

BigInteger.Pow()Math.Pow()的实施之间的区别是什么?在这两种情况下,我们都是using System.Numerics

第二个抛出 OverflowException BigInteger不能代表无穷大。

1 个答案:

答案 0 :(得分:6)

1000^1000超出了double的范围,因此当您致电Math.Pow(1000,1000)时,它会返回double.PositiveInfinity

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