Decimal-Datentyp (Visual Basic)

Speichert 128-Bit (16-Byte)-Werte mit Vorzeichen, die 96-Bit (12-Bytes)-Ganzzahlnummern darstellen, deren Einteilung durch eine variable Zehnerpotenz erfolgt. Der Skalierungsfaktor gibt die Anzahl der Ziffern rechts neben dem Dezimaltrennzeichen an. Sie reicht von 0 bis 28. Bei einer Skala von 0 (keine Dezimalstellen) ist der größtmögliche Wert +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9228162514264337593543950335E+28). Bei 28 Dezimalstellen ist der größte Wert +/-7,9228162514264337593543950335, und der kleinste Wert ungleich 0 (null) ist +/-0.0000000000000000000000000001 (+/-1E-28).

Hinweise

Der Decimal-Datentyp stellt die größte Anzahl von signifikaten Stellen für eine Zahl bereit. Er unterstützt bis zu 29 signifikante Stellen und kann Werte über 7.9228 x 10^28 darstellen. Er eignet sich besonders für Berechnungen, die sehr viele Stellen erfordern und bei denen keine Rundungsfehler auftreten dürfen (z. B. finanzielle Berechnungen).

Der Standardwert von Decimal ist 0 (null).

Programmiertipps

  • Genauigkeit. Decimal ist kein Gleitkommadatentyp. Die Decimal-Struktur enthält einen binären ganzzahligen Wert zusammen mit einem Vorzeichenbit und einem Skalierungsfaktor, der festlegt, welcher Teil des Werts ein Dezimalbruch ist. Deswegen verfügen Decimal-Zahlen über eine genauere Darstellung im Arbeitsspeicher als Gleitkommatypen (Single und Double).

  • Leistung. Der Decimal-Datentyp wird unter allen numerischen Typen am langsamsten verarbeitet. Wägen Sie vor der Wahl eines Datentyps die Kriterien Genauigkeit und Leistung gegeneinander ab.

  • Erweiterung. Der Decimal-Datentyp wird zu Single oder Double erweitert. Dies bedeutet, dass Sie Decimal in einen dieser Typen konvertieren können, ohne dass ein System.OverflowException-Fehler auftritt.

  • Nachgestellte Nullen. Visual Basic speichert keine nacfolgenden Nullen in einem Decimal-Literal. Eine Decimal-Variable behält jedoch alle nachgestellten Nullen bei, die aus Berechnungen resultieren. Dies wird anhand des folgenden Beispiels veranschaulicht:

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

    Im vorausgehenden Beispiel lautet die Ausgabe von MsgBox wie folgt:

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

  • Typzeichen. Durch Anhängen des Literaltypzeichens D an ein Literal wird der Decimal-Datentyp erzwungen. Durch Anhängen des Typkennzeichens @ an einen beliebigen Bezeichner wird für diesen ebenfalls der Decimal-Datentyp erzwungen.

  • Frameworktyp. Der entsprechende Typ in .NET Framework ist die System.Decimal-Struktur.

Bereich

Sie müssen möglicherweise das D-Typzeichen verwenden, um einer Decimal-Variablen oder einer Konstanten einen großen Wert zuzuweisen. Dies wird anhand des folgenden Beispiels veranschaulicht:

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

Der Compiler interpretiert ein Literal als Long, sofern ihm kein Literaltypzeichen folgt. Die Deklaration für bigDec1 erzeugt keinen Überlauf, da ihr Wert innerhalb des Bereichs für Long liegt. Der Wert für bigDec2 ist jedoch zu groß für den Long-Datentyp. Deshalb generiert der Compiler einen Fehler. Das Literaltypzeichen D löst das Problem für bigDec3, da der Compiler damit gezwungen wird, das Literal als Decimal zu interpretieren.

Siehe auch

Referenz

Datentyp: Zusammenfassung (Visual Basic)

System.Decimal

Decimal.Decimal

Single-Datentyp (Visual Basic)

Double-Datentyp (Visual Basic)

Funktionen für die Typkonvertierung (Visual Basic)

Konvertierung: Zusammenfassung (Visual Basic)

Konzepte

Effiziente Verwendung von Datentypen (Visual Basic)