Quelqu'un peut-il expliquer ce qui se passe dans le code sql suivant?Ne pas comprendre le comportement d'arrondi dans le serveur SQL lors de l'utilisation de l'opérateur de division
declare @dividend numérique (38,22)
declare @divisor numérique (38,22)
declare @otherDivisor int
ensemble @dividend = 1
ensemble @divisor = 3
set @otherDivisor = 3
select coulée (@dividend/@divisor comme numérique (38,22)), @dividend/@otherDivisor
Le résultat renvoyé est
0,3333330000000000000000 0,3333333333333333333333
Je m'attendrais au même résultat pour les deux calculs.
Merci beaucoup pour la réponse. Connaissez-vous un moyen de contourner ce problème? – ralf
@Ralf: Il suit des règles mathématiques normales, tout comme la multiplication des décimales dans la vie réelle (2dp x 3 dp donne 6 dp). Float peut-être mieux, au détriment d'une certaine précision ... – gbn