Tipo di dati Decimal (Visual Basic)
Contiene valori a 128 bit (16 byte) con segno che rappresentano valore integer di 96 bit (12 byte) scalati in base a una potenza variabile di 10. Il fattore di scala specifica il numero di cifre a destra del separatore decimale, da 0 a 28. Con una scala pari a 0 (nessuna posizione decimale), il più alto valore possibile è +/-79.228.162.514.264.337.593.543.950.335 (+/-7.9228162514264337593543950335E+28). Con 28 posizioni decimali, il più alto valore possibile è +/-7,9228162514264337593543950335, mentre il valore più piccolo diverso da zero è +/-0,0000000000000000000000000001 (+/-1E-28).
Note
Il tipo di dati Decimal fornisce il numero più elevato di cifre possibili per un numero. Supporta fino a 29 cifre significative e può rappresentare valori superiori a 7.9228 x 10^28. È particolarmente adatto per i calcoli, ad esempio finanziari, che richiedono un numero elevato di cifre ma non sono in grado di tollerare errori di arrotondamento.
Il valore predefinito di Decimal è 0.
Suggerimenti per la programmazione
Precisione. Decimal non è un tipo di dati a virgola mobile. La struttura Decimal contiene un valore integer binario nonché un bit di segno e un fattore di scala integer che specifica quale parte del valore è una frazione decimale. Per questa ragione, i numeri Decimal hanno una rappresentazione in memoria più precisa rispetto ai tipi a virgola mobile (Single e Double).
Prestazioni. Il tipo di dati Decimal è il più lento di tutti i tipi numerici. Prima di scegliere un tipo di dati è opportuno valutare l'importanza della precisione rispetto alle prestazioni.
Conversione verso un tipo di dati più grande. Il tipo di dati Decimal viene convertito verso il tipo più grande Single o Double. È pertanto possibile convertire Decimal in uno di questi tipi senza generare un errore System.OverflowException.
Zeri finali. In Visual Basic gli zeri finali non vengono archiviati in un valore letterale Decimal. Una variabile Decimal, tuttavia, conserva gli zeri finali acquisiti a seguito di un calcolo. Nell'esempio riportato di seguito viene illustrata questa situazione.
Dim d1, d2, d3, d4 As Decimal d1 = 2.375D d2 = 1.625D d3 = d1 + d2 d4 = 4.000D MsgBox("d1 = " & CStr(d1) & ", d2 = " & CStr(d2) & ", d3 = " & CStr(d3) & ", d4 = " & CStr(d4))
Il risultato di MsgBox dell'esempio precedente è riportato di seguito:
d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4
Caratteri tipo. Aggiungendo il carattere di tipo letterale D a un valore letterale, se ne determina la conversione nel tipo di dati Decimal. Aggiungendo il carattere identificatore di tipo @ a qualsiasi identificatore, se ne determina la conversione al tipo di dati Decimal.
Tipo Framework. Il tipo corrispondente in .NET Framework è la struttura System.Decimal.
Intervallo
Per assegnare un valore alto a una costante o variabile Decimal, può essere necessario utilizzare il tipo di carattere D. Nell'esempio riportato di seguito viene illustrata questa situazione.
Dim bigDec1 As Decimal = 9223372036854775807 ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808 ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D ' No overflow.
Il compilatore interpreta un valore letterale come Long, a meno che non sia seguito da un carattere di tipo letterale. La dichiarazione relativa a bigDec1 non produce un overflow in quanto il rispettivo valore è compreso nell'intervallo relativo a Long. Il valore di bigDec2, tuttavia, è troppo elevato per Long, pertanto il compilatore genera un errore. Il carattere di tipo letterale D risolve il problema relativo a bigDec3 inducendo il compilatore a interpretare il valore letterale come Decimal.
Vedere anche
Riferimenti
Riepilogo dei tipi di dati (Visual Basic)
Decimal.Decimal
Tipo di dati Single (Visual Basic)
Tipo di dati Double (Visual Basic)
Funzioni di conversione del tipo (Visual Basic)
Riepilogo della conversione (Visual Basic)