SQL Server tour après division
Dans une procédure stockée, j'ai une expression comme
select @some_val_in_percents = (@total_val / 100) * @some_val
Si j'utilise le Round
fonction comme ceci:
select @some_val_in_percents = Round((@total_val / 100) * @some_val, 0)
le résultat sera arrondi à l'entier de l'expression est calculée ou va (@total_val /100)
être arrondi et que multiplié par @some_val
?
Pourquoi ne pas essayer?
peut-être quelqu'un dira de moi un meilleur chemin que celui de la tour )))))
peut-être quelqu'un dira de moi un meilleur chemin que celui de la tour )))))
OriginalL'auteur superM | 2012-04-23
Vous devez vous connecter pour publier un commentaire.
Vous semblez être le calcul de la pour cent de la valeur à tort. Voici ce à quoi je m'attends à ce que ça ressemble à:
Comme pour le
ROUND()
fonction, il va agir sur le résultat final de l'expression, non pas sur le résultat partiel. Donc, d'abord, l'expression est évaluée complètement, puisROUND()
est appliqué au résultat.Note également (dans le cas où vous ne l'avez pas déjà connue) que si les deux opérandes de l'opérateur de division sont des nombres entiers, SQL Server effectue une division entière, c'est à dire le résultat de la division sera arrondi à l'entier le plus proche, même avant
ROUND()
est appliquée. Si vous voulez éviter cela, assurez-vous qu'au moins un des opérandes est pas entier, par exemple comme ceci:Note également le deuxième argument (de précision), ce qui est nécessaire dans Transact-SQL
ROUND()
.OriginalL'auteur Andriy M
Round
sera calculé d'après son contenu est évalué.Donc
(@total_val /100) * @some_val
sera arrondi.OriginalL'auteur Curt