11

我需要保留比 long 或 Int64 长的程序号。因为如果我使用 long 它只会返回 0。

4

3 回答 3

13

您可以在 .Net 4.0中使用BigInteger

BigInteger 类型是一种不可变类型,它表示一个任意大的整数,其值在理论上没有上限或下限。BigInteger 类型的成员与其他整数类型(Byte、Int16、Int32、Int64、SByte、UInt16、UInt32 和 UInt64 类型)的成员非常相似。此类型与 .NET Framework 中的其他整数类型不同,后者具有由其 MinValue 和 MaxValue 属性指示的范围。

如果您没有迁移到 .Net 4 的奢侈,那么您可以使用一个名为IntX的开源项目来帮助您。

IntX 是一个用纯 C# 2.0 编写的任意精度整数库,具有快速 - 大约 O(N * log N) - 乘法/除法算法实现。它提供了所有关于整数的基本算术运算、比较、按位移位等。它还允许解析不同基数的数字并将它们转换为字符串,也可以是任何基数。这个库的优点是快速乘法、除法和从基数到基数的转换算法 - 所有算法的快速版本都基于使用快速哈特利变换的大整数的快速乘法,运行时间为 O(N * log N * log log N) 时间而不是经典的 O(N^2)。

于 2013-09-24T07:07:29.187 回答
10

尝试使用BigInteger

BigInteger 类型是一种不可变类型,它表示一个任意大的整数,其值在理论上没有上限或下限。

于 2013-09-24T07:06:13.307 回答
6

如果您使用的是 .NET Framework 4.0,则可以使用BigInteger. 只需添加对System.Numerics程序集的引用。

.NET Framework 4.0如果您无法使用,还有很多其他实现,例如 CodeProject 上的这个

于 2013-09-24T07:10:39.017 回答