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