轉:c# 簡單又好用的四捨五入方法

來源:互聯網
上載者:User
四捨五入是軟體開發中經常遇到的問題,我也在不止一個項目中用到這方面的運算;關於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,實際上只需要用下面的代碼就可以

 ==============================

Math.Round( 3.455, 2, MidpointRounding.AwayFromZero)

==============================

 轉From,http://www.peugeothome.com/bbs/showtopic-814.aspx
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.