非常大的数值的正确数据类型是什么?它是如何使用的?

What is the correct datatype for very large numerical values and how is it used?

我正在处理来自 hackerrank 的问题。我无法显示正确的输出我不知道在这个程序中使用哪种数据类型。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution 
{
    static void Main(String[] args) 
    {
        double n = int.Parse(Console.ReadLine());

        double factorial = 1;
        for (int i = 1; i <= n; i++)
        {
            factorial *= i;
        }

        Console.WriteLine(factorial);
    }
}

我得到这个输出

        1.5511210043331E+25

但预期输出是

        15511210043330985984000000

我想使用 long 但我不知道如何使用。请建议我如何处理它。

提前致谢。

正如有人在评论中建议的那样,使用 BigInteger 也是一个好主意。

这是关于 BigInteger 的文档: https://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v=vs.110).aspx

大整数解法:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics; // This is important

class Solution 
{
    static void Main(String[] args) 
    {
        int n = int.Parse(Console.ReadLine()); // No reason to accept a double here

        BigInteger factorial = 1; 

        for (int i = 1; i <= n; i++)
        {
            factorial *= i;
        }

        Console.WriteLine(factorial.ToString());
   }
}