非常大的数值的正确数据类型是什么?它是如何使用的?
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());
}
}
我正在处理来自 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());
}
}