FirebirdSQL logo

Exemple NORMALIZE_DECFLOAT

Example 1. Normalisation de différentes valeurs de type DECFLOAT.
NORMALIZE_DECFLOAT(12.00) -- renvoi 12
NORMALIZE_DECFLOAT(120) -- renvoi 1.2E+2

QUANTIZE()

Disponible en

DSQL, PSQL

Syntaxe
QUANTIZE (decfloat_value, exp_value)
Table 1. paramètres de fonction QUANTIZE
Paramètre Description

decfloat_value

Une valeur ou une expression de type DECFLOAT ou être compatible avec le type DECFLOAT.

exp_value

Une valeur ou une expression à utiliser comme exposant ; doit être de type DECFLOAT ou être compatible avec le type DECFLOAT.

type de résultat de retour

DECFLOAT

La fonction QUANTIZE renvoie la valeur du premier argument mise à l’échelle en utilisant la deuxième valeur comme modèle. En d’autres termes, la fonction QUANTIZE renvoie la valeur de DECFLOAT égale en valeur (à l’exception de tout arrondi) et en signe à decfloat_value, et l’exposant égal en valeur à l’exposant exp_value.La fonction QUANTIZE peut être utilisée pour implémenter l’arrondi au chiffre le plus proche, comme l’arrondi au cent le plus proche en utilisant le mode d’arrondi défini DECFLOAT.

Le type de la valeur de retour est DECFLOAT(16) si les deux arguments sont DECFLOAT(16), sinon le type du résultat est DECFLOAT(34).

Note

La cible est l’exposant utilisé dans le format de stockage Decimal64 ou Decimal128 pour DECFLOAT de exp_value. Ce n’est pas nécessairement le même que l’exposant affiché dans des outils tels que isql. Par exemple, la valeur 1.23E+2 est un multiplicateur de 123 et une puissance de 0, alors que 1.2 est un multiplicateur de 12 et une puissance de -1.

Si la valeur decfloat est supérieure à la valeur exp, la valeur decfloat est multipliée par une puissance de dix et sa valeur est diminuée, si la valeur est inférieure, sa valeur est arrondie en utilisant le mode d’arrondi decfloat actuel et sa valeur est augmentée.

Lorsque l’exposant cible ne peut pas être atteint parce que le quotient dépasse la précision cible (16 ou 34 décimales), alors soit l’erreur “Decfloat float invalid operation”, soit NaN est retournée (selon la configuration actuelle des pièges decfloat).

Il n’y a pratiquement aucune restriction sur les exp_value.Cependant, dans presque tous les cas où NaN/sNaN/Infinity est utilisé, une exception sera levée(sauf si cela est autorisé par la configuration actuelle des pièges decfloat)

Si l’une des valeurs est NULL, le résultat de la fonction sera NULL, etc.

Example 1. Utilisation de la fonction QUANTIZE
select v, pic, quantize(v, pic) from examples;
V                       PIC                   QUANTIZE
======================= ===================== ==================
                   3.16                 0.001              3.160
                   3.16                 0.01               3.16
                   3.16                 0.1                3.2
                   3.16                 1                  3
                   3.16                 1E+1               0E+1
                   -0.1                 1                 -0
                      0                 1E+5               0E+5
                    316                 0.1              316.0
                    316                 1                316
                    316                 1E+1             3.2E+2
                    316                 1E+2               3E+2