DECFLOAT
DECFLOAT
est un type numérique de la norme SQL:2016 qui stocke exactementdes nombres à virgule flottante. À la différence de DECFLOAT
, les types FLOAT
ou DOUBLE PRECISION
.fournissent une approximation binaire de la précision voulue.
Firebird, conformément à la norme IEEE 754-1985 (IEEE 754-2008), met en œuvre les typesDECIMAL64
(DECFLOAT(16)
) et DECIMAL128
(DECFLOAT(34)
).
Tous les calculs intermédiaires sont effectués à l’aide d’un code à 34 chiffres.valeurs.
DECFLOAT[(precision)] precision ::= 16 | 34
Type | Précision maximale | Exponent minimal | Exposant maximal | Valeur la plus basse | Valeur maximale |
---|---|---|---|---|---|
|
16 |
-383 |
+384 |
1E-398 |
9.9..9E+384 |
|
34 |
-6143 |
+6144 |
1E-6176 |
9.9..9E+6144 |
Notez que bien que le plus petit exposant de DECFLOAT (16)
soit -383, la plus petite valeur a l’exposant -398, soit 15 chiffres de moins.Et de même, pour DECFLOAT (34)
, le plus petit exposant est -6143, mais la plus petite valeur a un exposant de degré -6176, soit 33 chiffres de moins.La raison en est que la précision a été "sacrifiée" afin de pouvoir stocker une valeur plus petite.
C’est le résultat de la façon dont la valeur est stockée : comme une valeur décimale de 16 ou 34 chiffres et l’exposant.Par exemple, 1.234567890123456e-383
est en fait stocké comme quotient 1234567890123456
et exposant -398
,et 1E-398
est retenu comme multiplicateur de 1
, exposant de degré -398
.
Le type DECFLOAT
doit être utilisé si vous avez besoin de calculer et de stocker des nombres avec une grande précision.
DECFLOAT
lors de la définition d’une tableCREATE TABLE StockPrice (
id INT NOT NULL PRIMARY KEY,
stock DECFLOAT(16),
...
);
DECFLOAT
en PSQLDECLARE VARIABLE v DECFLOAT(34);