2010-02-13 12 views
8

Sto scrivendo un'app che implica l'aritmetica con numeri giganteschi, con molte cifre. Ho scritto in precedenza una classe che semplifica la gestione di grandi numeri definendoli come stringhe e quindi utilizzando le funzioni di aritmetica delle stringhe lente. È questo il modo migliore per farlo? In caso contrario, come dovrei affrontare questo problema? C# ha qualcosa di integrato in queste situazioni?C#: Come devo gestire l'aritmetica con numeri enormi?

+0

Int64 non è sufficiente? Potresti dare un esempio di un'azione aritmetica che ti piacerebbe esibire? – Zyphrax

+1

System.Decimal sarà abbastanza grande per te? Il valore più grande che può essere rappresentato con esso è 79,228,162,514,264,337,593,543,950,335. – jjxtra

+1

"Humongous" non è in realtà una descrizione utile. Stiamo parlando di numeri con venti cifre, un migliaio di cifre, un milione di cifre, un miliardo di cifre o più di un miliardo di cifre? La risposta alla tua domanda sarà diversa per ciascuno. –

risposta

6

.NET 4 avrà questo integrato tramite il tipo BigInteger. Si dice che sia ben sintonizzato e che dovrebbe funzionare molto bene.

Per 3.5 e precedenti, è possibile utilizzare un'implementazione di BigInteger dalle origini Dynamic Language Runtime. (Vedi ad es. http://dlr.codeplex.com/sourcecontrol/changeset/view/40021?projectName=dlr#694008 ed esegui il drill-down in Src/Runtime/Microsoft.Dynamic/Math.) Non so se questo è stato ottimizzato come il tipo .NET 4 BigInteger, ma dovrebbe comunque essere più efficiente della tua versione di stringa perché rappresenta internamente i numeri grandi usando i tipi interi ed esegue l'aritmetica usando operazioni intere.

-1

Nella versione dotnet superiore a 4,0, System.Numerics.BigInteger vi aiuterà per questo problema.

se si ottiene errore di riferimento assieme utilizzando la sintassi di cui sopra, quindi aggiungere di riferimento usando

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

Spero che questo ti possa aiutare ..!

+0

Questo è già stato indicato nella risposta accettata. –

Problemi correlati