DECFLOAT
DECFLOAT [(precision)]
Parameter | Beschreibung |
---|---|
precision |
Genauigkeit in Dezimalstellen, entweder 16 oder 34.Standard ist 34. |
DECFLOAT
ist ein SQL:2016 standardkonformer numerischer Typ, der Gleitkommazahlen präzise speichert (dezimaler Gleitkommatyp), im Gegensatz zu FLOAT
oder DOUBLE PRECISION
, die eine binäre Annäherung an die angebliche Genauigkeit bieten.
Der Typ wird als IEEE 754-Standardtypen Decimal64
(DECFLOAT(16)
) oder Decimal128
(DECFLOAT(34)
) gespeichert und übertragen.
Alle Zwischenrechnungen werden mit 34-stelligen Werten durchgeführt.
Typ | Höchste Präzision | Geringste Präzision | Maximaler Exponent | Kleinster Wert | Größter Wert |
---|---|---|---|---|---|
|
16 |
-383 |
+384 |
1E-398 |
9.9..9E+384 |
|
34 |
-6143 |
+6144 |
1E-6176 |
9.9..9E+6144 |
Beachten Sie, dass, obwohl der kleinste Exponent für DECFLOAT(16)
-383 ist, der kleinste Wert einen Exponenten von -398 hat, aber 15 Stellen weniger.Und ähnlich für DECFLOAT(34)
ist der kleinste Exponent -6143, aber der kleinste Wert hat einen Exponenten von -6176, aber 33 Stellen weniger.Der Grund dafür ist, dass die Präzision "geopfert" wurde, um einen kleineren Wert speichern zu können.
Dies ergibt sich aus der Speicherung des Wertes: als Dezimalwert mit 16 oder 34 Stellen und einem Exponenten.Zum Beispiel wird '1.234567890123456e-383' tatsächlich als Koeffizient '1234567890123456' und Exponent '-398' gespeichert, während '1E-398' als Koeffizient '1', Exponent '-398' gespeichert wird.