Gros Probleme de Calcul avec le type Money

Le
abraham cohen
Bonjour

Regardez ce code :

begin
declare @Result money,@V1 money,@V2 money

Select @V1 = 2 , @V2 = 58
print @V1
print @V2

Set @Result = (@V1 / @V2) * 100000
Print 'R1 : .'
Print @Result

Set @Result = (@V1 * 100000 / @V2)
Print 'R2 : .'
Print @Result

end


j'obtiens deux resultats tres different :
R1 : .3440.00
R2 : .3448.28

Quelqu'un peut il m'expliquer , la raison ?

Merci d'avance .
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #19844231
De mémoire Money n'est rien d'autre qu'un alias pour un decimal avec 4
chiffres après la virgule...

Donc @v1/@v2 est arrondi à 4 chiffres après la virgule avant d'être
multiplié par 10000 :

declare @Result money,@V1 money,@V2 money
Select @V1 = 2 , @V2 = 58
SELECT 'V1/V2=',@V1 / @V2

Dans l'autre cas c'est 200000 / 58 qui est arrondi après la division ce qui
donne bien un résultat plus précis...

--
Patrice



"abraham cohen" de discussion :
Bonjour
Regardez ce code :

begin declare @Result money,@V1 money,@V2 money
Select @V1 = 2 , @V2 = 58
print @V1 print @V2

Set @Result = (@V1 / @V2) * 100000
Print 'R1 : ................'
Print @Result Set @Result = (@V1 * 100000 / @V2) Print 'R2 :
................'
Print @Result end


j'obtiens deux resultats tres different :
R1 : ................3440.00
R2 : ................3448.28

Quelqu'un peut il m'expliquer , la raison ?

Merci d'avance ....



Publicité
Poster une réponse
Anonyme