是否有任何内置的.NET替代方案可以使用数字(Math.Pow)的功能而没有错误?

Nik*_*tov 1 .net c# double-precision pow

Math.Pow似乎无法正常工作以取得重大成果.可能是因为它double用于计算(如何在.NET Framework中实现Math.Pow()?).

例如:

public static void Main()
{
    Console.WriteLine((long)Math.Pow(17, 13));
    Console.WriteLine(Pow(17, 13));
}

public static long Pow(int num, int pow)
{
    long answer = 1;
    for (int i = 0; i < pow; i++)
    {
        answer *= num;
    }

    return answer;
}
Run Code Online (Sandbox Code Playgroud)

上面代码的结果是:

9904578032905936
9904578032905937
Run Code Online (Sandbox Code Playgroud)

是否有任何内置的.NET替代方案可以使用数字的功能而没有错误?

Dou*_*las 10

BigInteger结构有一种Pow方法.此结构驻留在System.Numerics命名空间中,并在.NET Framework 4.0中引入.System.Numerics在使用之前,您需要添加对程序集的引用.

using System;
using System.Numerics;

public static class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine(BigInteger.Pow(17, 13));   // 9904578032905937
    }
}
Run Code Online (Sandbox Code Playgroud)

注意,BigInteger它只适用于整数运算; 它无法处理小数.