Decimal, type de données (Visual Basic)

Conserve les valeurs 128 bits (16 octets) qui représentent des entiers relatifs de 96 bits (12 octets) mis à l'échelle par une alimentation variable de 10. Le facteur d'échelle spécifie le nombre de chiffres à droite de la virgule décimale ; il est compris entre 0 et 28. La plus grande valeur possible avec une échelle 0 (aucune décimale) est +/-79 228 162 514 264 337 593 543 950 335 (+/-7,9228162514264337593543950335E+28). Avec 28 décimales, la plus grande valeur est +/-7,9228162514264337593543950335, et la plus petite valeur différente de zéro est +/-0,0000000000000000000000000001 (+/-1E-28).

Notes

Le type de données Decimal fournit le plus grand nombre de chiffres significatifs pour un nombre. Il prend en charge jusqu'à 29 chiffres significatifs et peut représenter des valeurs supérieures à 7.9228 x 10^28. Ce type de données est particulièrement adapté aux calculs (par exemple, financiers) qui exigent un grand nombre de chiffres, mais qui ne peuvent pas tolérer les erreurs d'arrondi.

La valeur par défaut de Decimal est 0.

Conseils de programmation

  • Précision. Decimal n'est pas un type de données à virgule flottante. La structure Decimal contient une valeur entière binaire, avec un bit de signe et un facteur d'échelle d'entier qui spécifie quelle partie de la valeur est une fraction décimale. C'est pourquoi les nombres Decimal ont une représentation plus précise dans la mémoire que les types à virgule flottante (Single et Double).

  • Performances. Le type de données Decimal est le plus lent de tous les types numériques. Vous devez peser l'importance de la précision par rapport aux performances avant de choisir un type de données.

  • Extension. Le type de données Decimal s'étend à Single ou Double. Cela signifie que vous pouvez convertir des données de type Decimal en données de l'un ou l'autre de ces types sans rencontrer d'erreur System.OverflowException.

  • Zéros de fin. Visual Basic ne stocke pas de zéros de fin dans un littéral Decimal. Toutefois, une variable Decimal conserve tous les zéros de fin obtenus par le calcul. L'exemple suivant illustre ce comportement.

    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))
    

    La sortie de MsgBox dans l'exemple précédent est la suivante :

    d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4

  • Caractères de type. L'ajout du caractère de type de littéral D à un littéral force ce dernier en un type de données Decimal. L'ajout du caractère de type d'identificateur @ à un identificateur force ce dernier en un type Decimal.

  • Type Framework. Le type correspondant dans le .NET Framework est la structure System.Decimal.

Plage

Il est parfois nécessaire d'utiliser le caractère de type D pour assigner une grande valeur à une variable ou à une constante Decimal. L'exemple suivant illustre ce comportement.

Dim bigDec1 As Decimal = 9223372036854775807   ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808   ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D  ' No overflow.

À moins qu'il ne soit suivi d'un caractère de type de littéral, un littéral est interprété par le compilateur comme étant de type Long. La déclaration de bigDec1 ne produit pas de dépassement de capacité, car sa valeur est comprise dans la plage de Long. Toutefois, la valeur de bigDec2 est trop grande pour Long, de sorte que le compilateur produit une erreur. Le caractère de type de littéral D résout le problème pour bigDec3 en forçant le compilateur à interpréter le littéral en tant que Decimal.

Voir aussi

Référence

Liste des types de données (Visual Basic)

System.Decimal

Decimal.Decimal

Single, type de données (Visual Basic)

Double, type de données (Visual Basic)

Fonctions de conversion de types de données (Visual Basic)

Liste des conversions (Visual Basic)

Concepts

Utilisation efficace des types de données (Visual Basic)