2010-02-04 290 views
5

在SQL Server Reporting Services中生成的報告中發生了一些奇怪的事情,我希望我不會太愚蠢。我使用Round函數來獲取整數。有時一個4.5將四捨五入到四,一個5.5將四捨五入到6.這是因爲四捨五入方法?我用這:SQL Server Reporting Services Round()函數

Round(Fields!GroupAverageAssessment.Value,0) 

我怎樣才能讓一個普通的四捨五入(4.5〜5 3.5〜4,6.5至7等...)

感謝

+1

什麼數據類型,你原來的領域是什麼?一個浮點數據類型可能看起來像4.5,但真的是4.49999999999什麼的,5.5可能真的是5.500000000000001 – HLGEM 2010-02-04 19:37:56

+0

如果*有時*在「有時4.5將舍入到4和5.5將舍入到6」實際上是*每次* ,那麼它就是用銀行家的四捨五入。 – 2010-02-04 19:42:35

+0

謝謝,該字段被定義爲Double,所以這不應該是問題。我會盡量遠離零距離。 – 2010-02-04 21:47:13

回答

13

這聽起來像round to even,也被稱爲銀行家的舍入。

另一個選項是 「遠離零」,這是你想要什麼:

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

更新的答案 - 剛剛意識到,AwayFromZero是你想要的。 – 2010-02-04 20:20:37

+0

謝謝,我會試試這個。我因閱讀文檔而感到困惑,當我嘗試MidpointRounding.AwayFromZero時,代碼被強調爲錯誤。無論如何,我會試一試... – 2010-02-04 21:46:25

+0

Awayfromzero爲我工作,但紅色下劃線仍然在那裏。我在哪裏放置導入系統?感謝您的幫助。 – 2010-02-05 03:12:08

2

使用MidpointRounding.AwayFromZero選項:

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

謝謝,我會試試這個,讓你知道。 – 2010-02-04 21:45:14