Decimaal gegevenstype (Visual Basic)
Bevat ondertekende 128-bits (16-byte) waarden die 96-bits (12-byte) gehele getallen vertegenwoordigen die zijn geschaald met een variabele macht van 10. De schaalfactor geeft het aantal cijfers rechts van het decimaalteken aan; het varieert van 0 tot en met 28. Met een schaal van 0 (geen decimalen), is de grootst mogelijke waarde +/-79.228.162.514.264.337.593,5 43.950.335 (+/-7,9228162514264337593543950335E+28). Met 28 decimalen is de grootste waarde +/-7,9228162514264337593543950335 en de kleinste niet-nulwaarde +/-0,00000000000000000000000000000000000000 (+/-1E-28).
Opmerkingen
Het Decimal
gegevenstype biedt het grootste aantal significante cijfers voor een getal. Het ondersteunt maximaal 29 significante cijfers en kan waarden vertegenwoordigen van meer dan 7,9228 x 10^28. Het is met name geschikt voor berekeningen, zoals financiële, waarvoor een groot aantal cijfers is vereist, maar die afrondingsfouten niet kunnen tolereren.
De standaardwaarde is Decimal
0.
Programmeertips
Precisie.
Decimal
is geen gegevenstype met drijvende komma. DeDecimal
structuur bevat een binaire geheel getalwaarde, samen met een tekenbit en een schaalfactor voor gehele getallen die aangeeft welk gedeelte van de waarde een decimale breuk is.Decimal
Daarom hebben getallen een nauwkeurigere weergave in het geheugen dan drijvendekommage-typen (Single
enDouble
).Prestaties. Het
Decimal
gegevenstype is het langzaamste van alle numerieke typen. U moet het belang van precisie afwegen tegen prestaties voordat u een gegevenstype kiest.Verbreding. Het
Decimal
gegevenstype wordt uitgebreid totSingle
ofDouble
. Dit betekent dat u kunt converterenDecimal
naar een van deze typen zonder dat er een System.OverflowException fout optreedt.Volgnullen. Visual Basic slaat geen volgnullen in een
Decimal
letterlijke op. EenDecimal
variabele behoudt echter eventuele volgnullen die rekenkundig zijn verkregen. In het volgende voorbeeld ziet u dit.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))
De uitvoer van
MsgBox
in het voorgaande voorbeeld is als volgt:d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4
Typ tekens. Als u het letterlijke type teken
D
toevoegt aan een letterlijke teken, wordt het aan hetDecimal
gegevenstype gedwongen. Als u het type@
id toevoegt aan een id, wordt dit gedwongen.Decimal
Type framework. Het bijbehorende type in .NET Framework is de System.Decimal structuur.
Bereik
Mogelijk moet u het D
typeteken gebruiken om een grote waarde toe te wijzen aan een Decimal
variabele of constante. Deze vereiste is omdat de compiler een letterlijke tekst interpreteert, tenzij Long
een letterlijk type het letterlijke teken volgt, zoals in het volgende voorbeeld wordt weergegeven.
Dim bigDec1 As Decimal = 9223372036854775807 ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808 ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D ' No overflow.
De declaratie voor bigDec1
produceert geen overloop omdat de waarde die eraan is toegewezen, binnen het bereik valt.Long
De Long
waarde kan worden toegewezen aan de Decimal
variabele.
De declaratie voor bigDec2
genereert een overloopfout omdat de waarde die eraan is toegewezen te groot is voor Long
. Omdat de numerieke letterlijke waarde niet eerst kan worden geïnterpreteerd als een Long
, kan deze niet worden toegewezen aan de Decimal
variabele.
Het bigDec3
letterlijke type teken D
lost het probleem op door de compiler te dwingen de letterlijke tekst te interpreteren als een Decimal
in plaats van als een Long
.