2010-02-04 8 views
5

Il se produit quelque chose de bizarre avec mon rapport généré dans SQL Server Reporting Services et j'espère que je ne suis pas trop stupide. J'utilise la fonction Round pour obtenir des entiers. Parfois, un 4.5 arrondira à 4 et un 5.5 arrondira à 6. Est-ce dû à la méthode d'arrondi? J'utilise ceci:Fonction Round() SQL Server Reporting Services

Round(Fields!GroupAverageAssessment.Value,0) 

Comment puis-je faire un arrondi régulier (4,5 à 5, 3,5 à 4, 6,5 à 7 et ainsi de suite ...)

Merci

+1

Quel type de données est votre champ d'origine? Un type de données flottant pourrait ressembler à 4.5 mais être vraiment 4.49999999999 ou quelque chose et 5.5 pourrait être vraiment 5.500000000000001 – HLGEM

+0

Si * parfois * dans "parfois un 4.5 arrondira à 4 et un 5.5 arrondira à 6" est réellement * chaque fois * , alors il utilise l'arrondi du banquier. –

+0

Merci, le champ est défini comme Double, ce qui ne devrait pas être le problème. Je vais essayer awayfromzero arrondi. –

Répondre

13

On dirait round to even, également connu sous le nom d'arrondissement du banquier.

L'autre option est "loin de zéro", ce qui est ce que vous voulez:

Round(4.5, 0, MidpointRounding.AwayFromZero) 
+0

Réponse mise à jour - juste réalisé qu'AwayFromZero est ce que vous voulez. –

+0

Merci, je vais essayer ça. J'étais perplexe parce que j'ai lu la documentation et quand j'ai essayé MidpointRounding.AwayFromZero le code a été souligné comme faux. Quoi qu'il en soit, je vais essayer ... –

+0

Awayfromzero a fonctionné pour moi, mais le rouge souligné était toujours là. Où dois-je placer le système d'importation? Merci pour l'aide. –

2

Utilisez l'option MidpointRounding.AwayFromZero:

Round([calculated number], [num decimal places], MidpointRounding.AwayFromZero) 
+0

Merci, je vais essayer cela et vous le faire savoir. –

Questions connexes