Vous n'êtes pas identifié(e).

#1 02/12/2015 06:48:24

Le calcul d'un ratio renvoie zéro

Bonjour,

J'utilise PostgreSql 9.4


Pourquoi SELECT (1/34)*20::float renvoie-t-il zéro (et non 0,588235294)

Alors que, par exemple, SELECT 1/(34*20)::float fonctionne et renvoie bien 0,001470588 ?

Merci de votre retour

Cordialement

Hors ligne

#2 02/12/2015 09:44:39

edlm
Membre

Re : Le calcul d'un ratio renvoie zéro

Bonjour,


parce que 1/34 donne 0. Voir la doc qui précise:

division (la division entière tronque les résultats)


Éric

Hors ligne

#3 02/12/2015 10:46:12

gleu
Administrateur

Re : Le calcul d'un ratio renvoie zéro

Pour être plus précis, dans le premier cas ((1/34)*20::float), la première opération est 1/34. Comme ce sont des entiers, le résultat de la division entière est 0. Multiplié par 20 en flottant, c'est toujours 0.

Pour le deuxième cas (1/(34*20)::float), on commence par multiplier 34 par 20, puis on convertit le résultat en flottant. Reste la division d'un entier par un flottant, qui donne un résultat en flottant.

Bref, l'ordre des opérations a une importance.


Guillaume.

Hors ligne

#4 02/12/2015 10:46:44

gleu
Administrateur

Re : Le calcul d'un ratio renvoie zéro

Et comme ça n'a rien à voir avec le thème "Site PostgreSQL", je déplace.


Guillaume.

Hors ligne

Pied de page des forums