QUANTIZE()
DSQL, PSQL
QUANTIZE (decfloat_value, exp_value)
| Paramètre | Description |
|---|---|
decfloat_value |
Une valeur ou une expression de type |
exp_value |
Une valeur ou une expression à utiliser comme exposant ; doit être de type |
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 |
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.
QUANTIZEselect 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