Condividi tramite


Tipi di dati numerici

Aggiornamento: novembre 2007

In Visual Basic sono disponibili numerosi tipi di dati numerici, che consentono di gestire i numeri in diverse rappresentazioni. I tipi integrali rappresentano soltanto numeri interi (positivi, negativi e zero), mentre i tipi non integrali rappresentano numeri con una parte intera e una parte frazionaria.

Per un confronto dettagliato dei tipi di dati di Visual Basic, vedere Riepilogo dei tipi di dati (Visual Basic).

Tipi numerici integrali

I tipi di dati integrali sono quelli che rappresentano soltanto numeri senza parti frazionarie.

I tipi di dati integrali con segno sono Tipo di dati SByte (Visual Basic) (8 bit), Tipo di dati Short (Visual Basic) (16 bit), Tipo di dati Integer (Visual Basic) (32 bit) e Tipo di dati Long (Visual Basic) (64 bit). Se una variabile contiene sempre valori integer anziché numeri frazionari, dichiararla utilizzando uno di questi tipi.

I tipi integrali senza segno sono Tipo di dati Byte (Visual Basic) (8 bit), Tipo di dati UShort (Visual Basic) (16 bit), Tipo di dati UInteger (32 bit) e Tipo di dati ULong (Visual Basic) (64 bit). Se una variabile contiene dati binari o dati di natura sconosciuta, dichiararla utilizzando uno di questi tipi.

Prestazioni

Le operazioni aritmetiche risultano più veloci con i tipi integrali che con altri tipi di dati. In Visual Basic le massime prestazioni si ottengono con i tipi Integer e UInteger.

Valori integer grandi

Se è necessaria una variabile che contenga un valore integer più grande della capacità massima prevista per il tipo di dati Integer, è possibile utilizzare in alternativa il tipo di dati Long. Le variabili Long possono contenere numeri compresi tra -9.223.372.036.854.775.808 e 9.223.372.036.854.775.807. Le operazioni con il tipo di dati Long sono leggermente più lente rispetto a quelle con il tipo di dati Integer.

Se sono necessari valori ancora più grandi, è possibile utilizzare il Tipo di dati Decimal (Visual Basic). Se non si utilizzano posizioni decimali, in una variabile Decimal è possibile archiviare numeri compresi tra -79.228.162.514.264.337.593.543.950.335 e 79.228.162.514.264.337.593.543.950.335. Le operazioni con i numeri Decimal risultano tuttavia molto più lente rispetto a quelle che utilizzano un qualsiasi altro tipo di dati numerici.

Valori integer piccoli

Se non è necessario disporre dell'intervallo completo del tipo di dati Integer, è possibile utilizzare il tipo di dati Short, che può contenere valori integer compresi tra -32.768 e 32.767. Il tipo di dati SByte contiene l'intervallo più piccolo di valori integer, ovvero i valori integer compresi tra -128 e 127. In alcuni casi, se si utilizzano numerose variabili che contengono valori integer piccoli, Common Language Runtime è in grado di archiviare le variabili Short e SByte in modo più efficace riducendo il consumo di memoria. Le operazioni con Short e SByte, tuttavia, sono più lente rispetto a quelle con Integer.

Valori integer senza segno

Se si ha la certezza che la variabile non dovrà mai contenere un numero negativo, è possibile utilizzare i tipi senza segnoByte, UShort, UInteger e ULong. Ciascuno di questi tipi è in grado di contenere un valore integer di grandezza doppia rispetto a quella del corrispondente tipo con segno (SByte, Short, Integer e Long). Le prestazioni di un tipo senza segno sono equivalenti a quelle del corrispondente tipo con segno. In particolare, UInteger e Integer sono i più efficaci tra i tipi di dati numerici elementari.

Tipi numerici non integrali

I tipi di dati non integrali sono quelli che rappresentano numeri con parti sia intere che frazionarie.

I tipi di dati numerici non integrali sono Decimal (a virgola fissa a 128 bit), Tipo di dati Single (Visual Basic) (a virgola mobile a 32 bit) e Tipo di dati Double (Visual Basic) (a virgola mobile a 64 bit). Sono tutti tipi con segno. Se una variabile può contenere una frazione, dichiararla utilizzando uno di questi tipi.

Decimal non è un tipo di dati a virgola mobile. I numeri Decimal contengono un valore integer binario e un fattore di scala integer che indica quale parte del valore è una frazione decimale.

I numeri a virgola mobile (Single e Double) sono caratterizzati da un intervallo maggiore rispetto a quello dei numeri Decimal, ma possono essere soggetti a errori di arrotondamento. I tipi a virgola mobile supportano un numero di cifre significative minore rispetto a Decimal, ma sono in grado di rappresentare valori con un ordine di grandezza maggiore.

I valori numerici non integrali possono essere espressi come mmmEeee, in cui mmm è la mantissa (le cifre significative) e eee è l'esponente (una potenza di 10). Il valore più grande positivo dei tipi non integrali è 7,9228162514264337593543950335E+28 per Decimal, 3,4028235E+38 per Single e 1,79769313486231570E+308 per Double.

Prestazioni

Double è il più efficace tra i tipi di dati frazionari, poiché i processori disponibili sulle attuali piattaforme eseguono operazioni a virgola mobile in precisione doppia. Tuttavia, l'esecuzione delle operazioni con tipo di dati Double richiede più tempo rispetto a quella delle operazioni con i tipi integrali, ad esempio Integer.

Numeri con il più piccolo ordine di grandezza

Per i numeri con il più piccolo ordine di grandezza possibile (il più vicino a 0), le variabili Double possono contenere numeri fino a -4.94065645841246544E-324 per i valori negativi e fino a 4.94065645841246544E-324 per i valori positivi.

Numeri frazionari piccoli

Se non è necessario disporre dell'intervallo completo del tipo di dati Double, è possibile utilizzare il tipo di dati Single, che può contenere numeri a virgola mobile compresi tra -3.4028235E+38 e 3.4028235E+38. Gli ordini di grandezza più piccoli per le variabili Single sono -1.401298E-45 per i valori negativi e 1.401298E-45 per i valori positivi. In alcuni casi, se si utilizzano numerose variabili che contengono numeri a virgola mobile piccoli, Common Language Runtime è in grado di archiviare le variabili Single in modo più efficace riducendo il consumo di memoria.

Vedere anche

Attività

Risoluzione dei problemi relativi ai tipi di dati

Procedura: includere valori integer in una variabile

Procedura: includere frazioni in una variabile

Procedura: inserire in una variabile il numero più grande possibile

Procedura: ottimizzare l'archiviazione di valori integer positivi con tipi senza segno

Procedura: chiamare una funzione Windows che accetta tipi senza segno

Procedura: inserire in una variabile le cifre più significative

Procedura: memorizzare valori di valuta in una variabile

Concetti

Tipi di dati carattere

Tipi di dati vari

Altre risorse

Tipi di dati di base