描述
在實際開發中decimal.Round(1.23525,4)!=1.2353實際是1.2352,而decimal.Round(1.23535,4)==1.2354
說明
四捨五入:當捨去位的數值大於等於5時,在捨去該位的同時向前位進一;當捨去位的數值小於5時,則直接捨去該位。
銀行四捨五入:當捨去位的數值小於5時,直接捨去該位;當捨去位的數值大於等於6時,在捨去該位的同時向前位進一;當捨去位的數值等於5時,如果前位數值為奇,則在捨去該位的同時向前位進一,如果前位數值為偶,則直接捨去該位。
eg:我們對1.234,1.345,1.355,1.366分別進行四捨五入和銀行四捨五入
四捨五入 銀行四捨五入
1.23 1.23
1.35 1.34
1.36 1.36
1.37 1.37
解決方法
我們既可以使用Round帶三個引數的Round方法實現四捨五入,但列舉值必須使用MidpointRounding.AwayFromZero(四捨五入),而不能使用MidpointRounding.ToEven(銀行四捨五入)。
測試有效效果
decimal.Round(1.23525,4,MidpointRounding.AwayFromZero)=1.2353,而decimal.Round(1.23535,4,MidpointRounding.AwayFromZero)==1.2354
參考資料
本文參考 “李濤的技術專欄” 部落格,http://terryli.blog.51cto.com/704315/154840