四捨五入是軟件開發中經常遇到的問題,我也在不止一個項目中用到這方面的運算;關於c#的四捨五入,如果你去網上搜會有好多結果,但大部分的內容都是說微軟的Math.Round() 不准確,屬於“四捨六入五成雙”,然後會有很多人自己去寫方法來實現,有的很簡單,有的很復雜,有的還不對;
其實要實現這個功能,真的不用這麼麻煩;大家既然知道c#有Math.Round(),難道就沒發現它有多大8個重載方法嗎,其中有一個類型是MidpointRounding的參數,只要我們很好的利用它,就完全可以實現很精確的四捨五入,根本不用寫那麼復雜的方法。
MidpointRounding:指定數學捨入方法應如何處理兩個數字間的中間值。
下表演示與 MidpointRounding 的值結合使用的某些正數和負數的捨入結果。在捨入數字時所使用的精度是零,這意味著小數點之後的數字會影響捨入運算。例如,對於數字 -2.5,小數點之後的數字是 5。由於該數字是中間值,因此您可以使用 MidpointRounding 值來確定捨入結果。如果指定了 AwayFromZero,則將返回 -3,因為它是精度為零且與零最接近的數字。如果指定了 ToEven,則將返回 -2,因為它是精度為零的最接近的偶數。
原始數字
取絕對值較大的值
取偶數
3.5
4
4
2.8
3
3
2.5
3
2
2.1
2
2
-2.1
-2
-2
-2.5
-3
-2
-2.8
-3
-3
-3.5
-4
-4
不用我再解釋了吧,假如像把3.455四捨五入到3.46,實際上只需要用下面的代碼就可以