Festkomma-Datentypen
Festkomma-Datentypen stellen die Vorhersagbarkeit von Multiplikations- und Divisionsoperationen sicher und machen sie zur ersten Wahl zum Speichern von Geldwerten.Firebird implementiert zwei Festkomma-Datentypen: NUMERIC
und DECIMAL
.Beide Typen begrenzen laut Norm die gespeicherte Zahl auf die angegebene Skala (die Anzahl der Nachkommastellen).
Unterschiedliche Behandlungen begrenzen die Genauigkeit für jeden Typ: Die Genauigkeit für NUMERIC
-Spalten ist genau „wie deklariert
“, während DECIMAL
-Spalten Zahlen akzeptieren, deren Genauigkeit mindestens der Deklaration entspricht.
Note
|
Das Verhalten von |
Beispielsweise definiert NUMERIC(4, 2)
eine Zahl, die insgesamt aus vier Ziffern besteht, einschließlich zweier Nachkommastellen;das heißt, er kann bis zu zwei Ziffern vor dem Punkt und nicht mehr als zwei Ziffern nach dem Punkt haben.Wird in eine Spalte mit dieser Datentypdefinition die Zahl 3.1415 geschrieben, wird der Wert 3.14 in der Spalte NUMERIC(4, 2)
gespeichert.
Die Deklarationsform für Festkommadaten, zB NUMERIC(p, s)
, ist beiden Typen gemeinsam.Es ist wichtig zu wissen, dass das Argument s
in dieser Vorlage scale ist und nicht “eine Anzahl von Stellen nach dem Komma”.Das Verständnis des Mechanismus zum Speichern und Abrufen von Festkommadaten sollte dabei helfen, zu veranschaulichen, warum: Zum Speichern wird die Zahl mit 10s (10 hoch s
) multipliziert und in eine ganze Zahl umgewandelt;beim Lesen wird die ganze Zahl zurückkonvertiert.
Die Methode zum Speichern von Festkommadaten in der Datenbank hängt von mehreren Faktoren ab: Deklarierte Genauigkeit, Datenbankdialekt, Deklarationstyp.
Skalierung | Datentyp | Dialekt 1 | Dialekt 3 |
---|---|---|---|
1 - 4 |
|
|
|
1 - 4 |
|
|
|
5 - 9 |
|
|
|
10 - 18 |
|
|
|
19 - 38 |
|
|
|
Note
|
Numeriken mit einer Genauigkeit von weniger als 19 Stellen verwenden Bei komplexen Berechnungen werden diese Ziffern intern in DECFLOAT(34) umgewandelt.Das Ergebnis verschiedener mathematischer Operationen, wie |