Domanda

Quando si eseguono calcoli su numeri molto grandi in cui i tipi di dati integrali come double o int64 non sono sufficienti, potrebbe essere necessaria una classe separata per gestire numeri così grandi.

Qualcuno è interessato a offrire un algoritmo efficiente sul modo migliore per farlo?

È stato utile?

Soluzione 2

In C# 4.0 utilizzare il file Tipo BigInteger

Altri suggerimenti

Ci sono 2 soluzioni al tuo problema:

  • Modo semplice:Utilizza una libreria esterna come 'La libreria GNU MP Bignum e dimenticare i dettagli di implementazione.

  • Una strada difficile:Progetta la tua classe/struttura contenente più tipi di dati di ordine superiore come variabili double o int64 e definisci operazioni matematiche di base per essi utilizzando l'overload degli operatori (in C++) o tramite metodi denominati aggiungi, sottrai, moltiplica, sposta, ecc.(in JAVA e altri linguaggi OO).

Fammi sapere se hai bisogno di ulteriore aiuto.L'ho fatto un paio di volte in passato.

Stai chiedendo informazioni aritmetica con precisione arbitraria, argomento sul quale sono stati scritti libri.Se desideri solo una libreria BigNum semplice e abbastanza efficiente per C#, potresti dare un'occhiata IntX.

Usare le funzionalità integrate di una lingua funziona per me.

Java ha BigInteger E BigDecimal, e Python passa automaticamente a un oggetto simile a quello di Java se un numero esce dall'intervallo di an integer o quant'altro.

Per quanto riguarda le altre lingue, però, non ne ho idea.

Odio reinventare la ruota.

Creare la propria libreria BigNum è complicato, quindi direi come jjnguy.Usa tutto ciò che la tua lingua offre come librerie.

In .net, fare riferimento alla dll VisualJ poiché contengono le classi BigInteger e BigDecimal.Dovresti tuttavia essere consapevole di alcune limitazioni di queste librerie, come ad esempio la mancanza di un metodo della radice quadrata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top