C#:如何处理大数字的算术?

时间:2010-02-13 22:10:57

标签: c# .net string biginteger

我正在编写一个应用程序,其中包含大量数字的算术,数字很多。我之前编写过一个类,通过将它们定义为字符串然后使用慢速算术字符串函数来简化处理大数字的过程。这是最好的方法吗?如果没有,我该如何处理这个问题? C#是否有针对此类情况的内置内容?

5 个答案:

答案 0 :(得分:7)

如果您可以在.NET 4上执行此操作,System.Numeric.BigInteger可以提供帮助。如果您使用的是较旧版本的.NET,IntX会对您有帮助。

另请参阅C#中大整数的this SO question

答案 1 :(得分:6)

.NET 4将通过BigInteger类型内置它。据说这个调整很好,应该表现得很好。

对于3.5及更早版本,您可以从Dynamic Language Runtime来源获取BigInteger的实现。 (参见例如http://dlr.codeplex.com/sourcecontrol/changeset/view/40021?projectName=dlr#694008并向下深入研究Src / Runtime / Microsoft.Dynamic / Math。)我不知道它是否与.NET 4 BigInteger类型一样高,但它仍然应该更高效比你的字符串版本,因为它在内部使用整数类型表示大数字,并使用整数运算执行算术。

答案 2 :(得分:1)

GNU MP bignum库是最快的库之一。它有一个.NET包装器 http://gnumpnet.codeplex.com/

这是另一个带有源的.NET bignum library

答案 3 :(得分:1)

Big Integer类,我多次用于加密项目(需要非常大的数字)。效果很好。

http://www.codeproject.com/KB/cs/biginteger.aspx

答案 4 :(得分:-1)

在4.0以上的dotnet版本中, System.Numerics.BigInteger会帮助您解决此问题。

如果使用上述语法获得程序集引用错误,则使用

添加引用

http://www.dllme.com/dll/files/system_numerics_dll.html

希望这会对你有帮助..!