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-separated-by-commas}
In the {}
I would like to put 1000 integers, some with over 70 digits.
But when I do that I get the following error:
Integral constant is too large (CS1021).
So how do I solve this problem?
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")
, ...
};
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
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With