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

Max*_*sky 8 .net c# string biginteger

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

Håv*_*d S 7

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

另请参阅这个关于C#中大整数的SO问题.


ito*_*son 6

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

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