我正在使用SharpDevelop(C#)软件。
我已经创建了一个整数(数组)列表,如下所示:
int[] name = new int[number-of-elements]{elements-separated-by-commas}
在{}
中我想放1000个整数,有些则超过70位。
但是当我这样做时,我收到以下错误:
Integral constant is too large (CS1021).
那么我该如何解决这个问题?
答案 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/
IntX[] name =
{
IntX.Parse("9999999999999999999999999999999999999999999999999999999999999999999999"),
IntX.Parse("9999999999999999999999999999999999999999999999999999999999999999999999")
};
其他问题是您可以在c#中定义的最大整数文字是ulong
,其最大值为18,446,744,073,709,551,615
(较大的值会导致编译错误),这在您的情况下显然是不够的,简单的解决方案将使用BigInteger.Parse
或IntX
库IntX.Parse
。