积分常数太大(CS1021) - 如何在数组中放入1000个极大(70+位)的整数?

时间:2014-10-11 15:02:57

标签: c#

我正在使用SharpDevelop(C#)软件。

我已经创建了一个整数(数组)列表,如下所示:

int[] name = new int[number-of-elements]{elements-separated-by-commas}

{}中我想放1000个整数,有些则超过70位。

但是当我这样做时,我收到以下错误:

Integral constant is too large (CS1021).

那么我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

错误并不意味着您的数组中有太多整数。这意味着其中一个整数大于C#中int中可表示的最大值,即高于2,147,483,647

如果您需要代表70位数字,请使用BigInteger

BigInteger[] numbers = new[] {
    BigInteger.Parse("1234567890123456789012345678")
,   BigInteger.Parse("2345678901234567890123456789")
,   ...
};

答案 1 :(得分:3)

来自.Net Framework 4.0 Microsoft引入了System.Numerics.dll,其中包含BigInteger结构,可以表示任意大的有符号整数。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.numerics.biginteger%28v=vs.100%29.aspx

        BigInteger[] name =
        {
            BigInteger.Parse("9999999999999999999999999999999999999999999999999999999999999999999999"),
            BigInteger.Parse("9999999999999999999999999999999999999999999999999999999999999999999999")
        };

对于旧版本的框架,您可以使用IntX库。您可以使用Intall-Package IntX命令或https://intx.codeplex.com/

从Nuget获取软件包
        IntX[] name =
        {
            IntX.Parse("9999999999999999999999999999999999999999999999999999999999999999999999"),
            IntX.Parse("9999999999999999999999999999999999999999999999999999999999999999999999")
        };

其他问题是您可以在c#中定义的最大整数文字是ulong,其最大值为18,446,744,073,709,551,615(较大的值会导致编译错误),这在您的情况下显然是不够的,简单的解决方案将使用BigInteger.ParseIntXIntX.Parse