Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gros Probleme de Calcul avec le type Money

1 réponse
Avatar
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 ....

1 réponse

Avatar
Patrice
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" a écrit dans le message de groupe
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 ....