Integral constant is too large (CS1021) - How to put 1000 extremely big (70+ digits) integers in an array?

后端 未结 2 1895
醉酒成梦
醉酒成梦 2021-01-14 21:46

I\'m using the software SharpDevelop (C#).

I\'ve created a list of integers (array) like this:

int[] name = new int[number-of-elements]{elements-sepa         


        
相关标签:
2条回答
  • 2021-01-14 22:04

    From .Net Framework 4.0 Microsoft introduced System.Numerics.dll which contains a BigInteger structure which can represents an arbitrarily large signed integer. for more information you can refer to http://msdn.microsoft.com/en-us/library/system.numerics.biginteger%28v=vs.100%29.aspx

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

    for older versions of framework you can use IntX library. you can obtain the package either from Nuget with Intall-Package IntX command or https://intx.codeplex.com/

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

    other problem is the biggest integer literal you can define in c# is ulong with max value of 18,446,744,073,709,551,615 (larger values leads to compile error), which is obviously not enough in your case, easy solution would be to use BigInteger.Parse or in case of IntX library IntX.Parse.

    0 讨论(0)
  • 2021-01-14 22:05

    The error does not mean that you have too many integers in your array. It means that one of the integers is larger than the maximum value representable in an int in C#, i.e. above 2,147,483,647.

    If you need representation of 70-digit numbers, use BigInteger:

    BigInteger[] numbers = new[] {
        BigInteger.Parse("1234567890123456789012345678")
    ,   BigInteger.Parse("2345678901234567890123456789")
    ,   ...
    };
    
    0 讨论(0)
提交回复
热议问题