Bonjour,
Dans une fonction plpgsql lorsque je fais une division comme 10/100 j'obtiens 0 et non 0.1
Ma variable est pourtant de type numeric
Cordialement
Bonjour,
Dans une fonction plpgsql lorsque je fais une division comme 10/100 j'obtiens 0 et non 0.1
Ma variable est pourtant de type numeric
Cordialement
NUMERIC avec quelle précision ?
SQL est un langage fortement typé. Si vous avez mis du NUMERIC de précision 0, cela revient à de l'entier.
A +
donne 0.1000000000
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT CAST(10 AS NUMERIC(10,2))/CAST(100 AS NUMERIC(10,2))
Vous avez donc mal essayé !
A +
Effectivement NUMERIC(4,2) provoque une erreur.
Merci bien !
En NUMERIC (4,2) 100 ne passe pas !
A +
si j'essaie cela :
J'obtiens ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT CAST(10 AS NUMERIC(4,2))/CAST(100 AS NUMERIC(4,2))
ERROR: numeric field overflow
DETAIL: The absolute value is greater than or equal to 10^2 for field with precision 4, scale 2.
Cordialement
Extrait de la doc Postgresql :
NUMERIC (4,2) signifie donc 4 chiffres au total dont 2 après la virgule.l'échelle d'un numeric est le nombre de chiffres décimaux de la partie fractionnaire, à droite du séparateur de décimales. La précision d'un numeric est le nombre total de chiffres significatifs dans le nombre complet, c'est-à-dire le nombre de chiffres de part et d'autre du séparateur. Donc, le nombre 23.5141 a une précision de 6 et une échelle de 4. On peut considérer que les entiers ont une échelle de 0. La précision maximale et l'échelle maximale d'une colonne numeric peuvent être toutes deux réglées. Pour déclarer une colonne de type numérique, il faut utiliser la syntaxe :
NUMERIC(précision, échelle)
100 est l'équivalent de 100,00 donc 5 chiffres au total dont 2 après la virgule.
Voilà pourquoi tu as ce message d'erreur.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager