积分常数太大(CS1021)-如何在数组中放入1000个超大(70位以上)整数

本文关键字:1000个 整数 70位 CS1021 常数太 数组 | 更新日期: 2023-09-27 18:26:20

我使用的是SharpDevelop(C#)软件。

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

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

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

但当我这样做时,我会得到以下错误:

Integral constant is too large (CS1021).

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

积分常数太大(CS1021)-如何在数组中放入1000个超大(70位以上)整数

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

如果您需要70位数字的表示,请使用BigInteger:

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

从.Net Framework 4.0开始,Microsoft引入了包含BigInteger结构的System.Numerics.dll,该结构可以表示任意大的带符号整数。有关详细信息,请参阅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命令从Nuget获取包,或者https://intx.codeplex.com/

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

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