ESQL DECIMAL-Datentyp

Der DECIMAL-Datentyp enthält eine exakte Darstellung einer Dezimalzahl. Diese verfügen überGenauigkeit, Nachkommastellen und Rundung. Die Genauigkeit ist die Gesamtzahl an Ziffern in einer Zahl:
  • Die minimale Genauigkeit ist 1.
  • Die maximale Genauigkeit ist 34.
Die Anzahl der Kommastellen bezeichnet die Anzahl an Ziffern rechts neben dem Komma:
  • Die Mindestgenauigkeit (-Exponent) ist -999.999.999.
  • Die Höchstgenauigkeit (-Exponent) ist +999.999.999.

Genauigkeit und Anzahl der Kommastellen können beim Deklarieren einer Dezimalzahl nicht definiert werden, da diese automatisch zugewiesen werden. Genauigkeit und Anzahl der Kommastellen können nur beim Casting zu einer Dezimalzahl angegeben werden.

Anzahl der Kommastellen, Genauigkeit und Rundung

Es gelten die folgenden Regeln bezüglich Anzahl der Kommastellen, Genauigkeit und Rundung:
  • Solange die Rundung nicht in der maximalen Genauigkeit bleiben muss, ist die Anzahl der Kommastellen des Ergebnisses einer Addition oder Substraktion die größere der beiden Operanden.
  • Solange die Rundung nicht in der maximalen Genauigkeit bleiben muss, ist der Anzahl der Kommastellen des Ergebnisses einer Multiplikation die Summe der Kommastellenanzahl der beiden Operanden.
  • Die Genauigkeit des Ergebnisses einer Division ist die kleinere Ziffernanzahl, die zur genauen Darstellung des Ergebnisses und der maximalen Genauigkeit erforderlich ist.
  • Bei sämtlichen Additionen, Subtraktionen, Multiplikationen und Divisionen wird erforderlichenfalls die niedrigstwertige Ziffer gerundet, um die maximale Genauigkeit einzuhalten.
  • Alle automatische Rundungen sind unverzerrte oder halbgerade, symmetrische Rundung. Die Regeln lauten folgendermaßen:
    • Wenn die erste abgelegte Ziffer 4 oder weniger ist, bleibt die erste beibehaltene Ziffer unverändert.
    • Wenn die erste abgelegte Ziffer 6 oder mehr ist, wird die erste beibehaltene Ziffer erhöht.
    • Wenn die erste abgelegte Ziffer 5 ist, wird die erste beibehaltene Ziffer erhöht, wenn sie ungerade ist, und bleibt unverändert, wenn sie gerade ist. Beispiel: Die Zahlen 1,5 und 2,5 werden demnach beide auf 2 gerundet, während 3,5 und 4,5 beide auf 4 gerundet werden.
    • Negative Zahlen werden nach der gleichen Regel gerundet.

Dezimalliterale

Dezimalliterale, die lediglich aus einer nicht in Anführungszeichen gesetzten Ziffernfolge bestehen, also kein Dezimalzeichen und keinen Exponenten enthalten (Beispiel:12345) gehören zum Typ INTEGER, wenn sie klein genug sind, um als ganze Zahlen dargestellt zu werden. Ansonsten sind sie vom Typ her DECIMAL.

Dezimalliterale, die aus einer nicht in Anführungszeichen gesetzten Ziffernfolge bestehen und optional ein Dezimalzeichen und einen Exponenten enthalten (Beispiel: 123e1) gehören zum Typ FLOAT, wenn sie klein genug sind, um als Gleitkommazahlen dargestellt zu werden. Ansonsten sind sie vom Typ her DECIMAL.

Dezimalliterale, die aus dem Schlüsselwort DECIMAL und einer Ziffernfolge in Anführungszeichen bestehen und optional ein Dezimalzeichen und/oder einen Exponenten enthalten (oder auch nicht), gehören zum Typ DECIMAL; Beispiel: DECIMAL '42', DECIMAL '1.2346789e+203'.

Zeichenfolgen dieses Literaltyps können auch die folgenden Werte aufweisen
  • 'NAN', keine Zahl
  • 'INF', 'INFINITY'
  • '+INF', '+INFINITY'
  • '-INF', '-INFINITY'
  • 'MAX'
  • 'MIN'
(in jeder Kombination aus Groß-/Kleinschreibung), um die entsprechenden Werte anzugeben.
Beginn der ÄnderungWenn Sie nicht genügend Genauigkeitsziffern angeben wird 'INF' zurückgegeben, so wie in folgendem Beispiel gezeigt:
 SET VAL [equals char] CAST('123456' AS DECIMAL(3,0))
Ende der Änderung
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ak17820_