TIPI A PRECISIONE ARBITRARIA E BIGINTEGER

Fino ad ora abbiamo sempre parlato e usato tipi a precisione fissa, cioè tipi che hanno un range limitato di numeri che possono rappresentare poiché si ha un numero fisso, appunto, di bit da poter utilizzare. Esistono però dei tipi che non hanno questo limite. Tali tipi sono detti a “precisione arbitraria” poiché l’unico limite che si può imporre a valori di questo tipo è la memoria della macchina; perciò fino a quando la macchina che utilizziamo avrà memoria di archiviazione, sarà possibile ingrandire il valore inizializzato. Il ragionamento è semplice, invece di memorizzare i valori in un numero fisso di bit, queste implementazioni utilizzano tipicamente array di dimensione variabile; in altre parole la rappresentazione interna è espansa dinamicamente insieme al numero, va avanti ad oltranza. Quando si va ad inizializzare un valore con un tipo a precisione arbitraria perciò non deve sorprendere se si dovrà inizializzare come una stringa, cioè tra virgolette.

Molti linguaggi di programmazione, come quelli disponibili in Visual Studio, hanno a disposizione librerie contenenti questi tipi. I due tipi più usati sono BigInteger per gli interi e Complex per i floating point; essi sono presenti nella reference System.Numerics. Le references sono riferimenti a librerie o moduli che fanno parte dell’ambiente di sviluppo; esse possono essere aggiunte, eliminate o create dallo sviluppatore. Un suggerimento è quello di importare anche il System.Name, infatti ad ogni libreria è associato uno spazio dei nomi, cioè una radice da prefiggere a ciascun nome in modo che i nomi siano referenziati in maniera univoca, in modo da non creare conflitti e/o ambiguità.

Il tipo BigInteger può essere utile per risolvere un problema presentatosi negli articoli precedenti, ciò il calcolo del fattoriale. Infatti abbiamo visto che con il tipo Integer sarà possibile arrivare fino a n = 12, con il tipo Long fino a n = 20, mentre con il tipo BigInteger sarà possibile arrivare a qualunque numero, anche n = 1000 ad esempio, fino a quando non si esaurisca la memoria della macchina. Un ultimo accorgimento è che quando si vuole stampare una variabile del tipi BigInteger, si deve eseguire una conversione a stringa utilizzando il metodo .ToString() .

Lascia un commento

Progetta un sito come questo con WordPress.com
Comincia ora