2010-02-13 18 views
8

Estoy escribiendo una aplicación que implica aritmética con números enormes, con muchos dígitos. Anteriormente escribí una clase que simplifica el manejo de grandes números definiéndolos como cadenas y luego usando funciones lentas de aritmética. ¿Es esta la mejor manera de hacerlo? Si no, ¿cómo debería abordar este problema? ¿C tiene algo incorporado en tales situaciones?C#: ¿Cómo debo manejar la aritmética con números enormes?

+0

Int64 no será suficiente? ¿Podría dar un ejemplo de una acción aritmética que le gustaría realizar? – Zyphrax

+1

¿Será System.Decimal lo suficientemente grande para usted? El valor más grande que se puede representar con él es 79,228,162,514,264,337,593,543,950,335. – jjxtra

+1

"Humongous" no es realmente una descripción útil. ¿Estamos hablando de números con veinte dígitos, mil dígitos, un millón de dígitos, mil millones de dígitos o más de mil millones de dígitos? La respuesta a tu pregunta será diferente para cada uno. –

Respuesta

6

.NET 4 tendrá esto incorporado a través del tipo BigInteger. Se dice que está muy bien ajustado y debería funcionar muy bien.

Para 3.5 y anteriores, puede obtener una implementación de BigInteger de las fuentes Dynamic Language Runtime. (Consulte, por ejemplo, http://dlr.codeplex.com/sourcecontrol/changeset/view/40021?projectName=dlr#694008 y profundice en Src/Runtime/Microsoft.Dynamic/Math.) No sé si esto se ha ajustado tanto como el tipo .NET 4 BigInteger, pero aún así debería ser más eficiente que su versión de cadena porque representa internamente los números grandes usando tipos integrales y realiza aritmética usando operaciones enteras.

-1

En la versión dotnet por encima de 4,0, System.Numerics.BigInteger le ayudará a este problema.

si le da error de referencia de montaje usando la sintaxis anterior, a continuación, añadir referencia utilizando

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

Espero que esto te ayude ...!

+0

Esto ya se ha señalado en la respuesta aceptada. –

Cuestiones relacionadas