Share via


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. De Decimal 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 (SingleenDouble).

  • 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 tot Single of Double. Dit betekent dat u kunt converteren Decimal naar een van deze typen zonder dat er een System.OverflowException fout optreedt.

  • Volgnullen. Visual Basic slaat geen volgnullen in een Decimal letterlijke op. Een Decimal 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 het Decimal 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 bigDec3letterlijke 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.

Zie ook