FirebirdSQL logo

SET DECFLOAT

Destination

Modifier le mode d’arrondi et le comportement d’erreur pour le type DECFLOAT.

SET DECFLOAT
  { ROUND <round_mode>
  | TRAPS TO [<trap_opt> [, <trap_opt> ...]] }

<round_mode> ::=
    CEILING | UP | HALF_UP | HALF_EVEN
  | HALF_DOWN | DOWN | FLOOR | REROUND

<trap_opt> ::=
    DIVISON_BY_ZERO | INEXACT | INVALID_OPERATION
  | OVERFLOW | UNDERFLOW

SET DECFLOAT ROUND

L’opérateur SET DECFLOAT ROUND change le mode d’arrondi pour la session en cours.Les modes d’arrondi suivants, compatibles IEEE, sont pris en charge :

CEILLING

Arrondissement à partir du haut. Si tous les chiffres rejetés sont des zéros ou si le signe du nombre est négatif, le dernier chiffre non rejeté reste le même. Dans le cas contraire, le dernier chiffre non rejeté est incrémenté de un (arrondi à l’unité supérieure).

UP

Arrondissement à partir de zéro (troncature avec incrément). Les valeurs rejetées sont ignorées.

HALF_UP

Arrondi à la valeur la plus proche. Cette option est utilisée par défaut. Si le résultat est équidistant, l’arrondi au chiffre supérieur est effectué. Si les valeurs écartées sont supérieures ou égales à la moitié (0,5) de un à la position gauche suivante, le dernier chiffre non écarté est incrémenté de un (arrondi vers le haut). Sinon, les valeurs rejetées sont ignorées.

HALF_EVEN

Arrondi à la valeur la plus proche. Si le résultat est équidistant, l’arrondi est effectué de manière à ce que le dernier chiffre soit pair. Si les valeurs rejetées sont supérieures à la moitié (0,5) d’une unité dans la position suivante à gauche, le dernier chiffre non rejeté est incrémenté d’une unité (arrondi à l’unité supérieure). S’ils sont inférieurs à la moitié, le résultat n’est pas corrigé, c’est-à-dire que les chiffres rejetés sont ignorés. Dans le cas contraire, lorsque les valeurs rejetées sont exactement égales à la moitié, le dernier chiffre non rejeté est inchangé s’il est pair et incrémenté d’une unité (arrondi au chiffre supérieur) dans le cas contraire (pour obtenir un chiffre pair). Ce mode d’arrondi est également appelé arrondi de banque et donne une impression d’arrondi équitable.

HALF_DOWN

Arrondir à la valeur la plus proche. Si le résultat est équidistant, l’arrondi au chiffre inférieur est effectué. Si les valeurs écartées sont supérieures ou égales à la moitié (0,5) de un dans la position gauche suivante, le dernier chiffre non écarté est décrémenté de un (arrondi vers le bas). Sinon, les valeurs rejetées sont ignorées.

DOWN

Arrondi vers zéro (troncature). Les valeurs rejetées sont ignorées.

FLOOR

Arrondi vers le bas. Si tous les chiffres écartés sont des zéros ou si le signe est positif, le dernier chiffre non écarté ne change pas. Dans le cas contraire (signe négatif), le dernier chiffre non rejeté est incrémenté de un.

REROUND

Arrondi à une valeur supérieure si l’arrondi est de 0 ou 5, sinon l’arrondi est à une valeur inférieure.

Example 1. Changement du mode d’arrondi
SET DECFLOAT ROUND HALF_DOWN;
Modes d’arrondi 12.341 12.345 12.349 12.355 12.405 -12.345

CEILING

12.35

12.35

12.35

12.36

12.41

-12.34

UP

12.35

12.35

12.35

12.36

12.41

-12.35

HALF_UP

12.34

12.35

12.35

12.36

12.41

-12.35

HALF_EVEN

12.34

12.34

12.35

12.36

12.40

-12.34

HALF_DOWN

12.34

12.34

12.35

12.35

12.40

-12.34

DOWN

12.34

12.34

12.34

12.35

12.40

-12.34

FLOOR

12.34

12.34

12.34

12.35

12.40

-12.35

REROUND

12.34

12.34

12.34

12.36

12.41

-12.34