我正在处理来自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
我想用很久但我不知道怎么做。请建议我如何处理它。
提前致谢。
答案 0 :(得分:-1)
正如有人在评论中建议的那样,使用BigInteger也是一个好主意。
以下是关于BigInteger的文档: https://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v=vs.110).aspx
BigInteger解决方案:
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());
}
}