Math.Round (Decimal):將小數值舍入到最接近的整數。由 .NET Compact Framework 支持。
Math.Round (Double):將雙精度浮點值舍入爲最接近的整數。由 .NET Compact Framework 支持。
Math.Round (Decimal, Int32):將小數值舍入到指定精度。由 .NET Compact Framework 支持。
Math.Round (Decimal, MidpointRounding):將小數值舍入到最接近的整數。一個參數,指定當一個值正好處於另兩個數中間時如何舍入這個值。
Math.Round (Double, Int32):將雙精度浮點值舍入到指定精度。由 .NET Compact Framework 支持。
Math.Round (Double, MidpointRounding):將雙精度浮點值舍入爲最接近的整數。一個參數,指定當一個值正好處於另兩個數中間時如何舍入這個值。
Math.Round (Decimal, Int32, MidpointRounding):將小數值舍入到指定精度。一個參數,指定當一個值正好處於另兩個數中間時如何舍入這個值。
Math.Round (Double, Int32, MidpointRounding):將雙精度浮點值舍入到指定精度。一個參數,指定當一個值正好處於另兩個數中間時如何舍入這個值。
MSDN
下面通過一個例子瞭解具體情況
Math.Round(0.145, 2, MidpointRounding.AwayFromZero)
Math.Round(0.145, 2, MidpointRounding.ToEven)
運行結果: 0.14
0.14
很令人詫異的結果,這是因爲我們調用的是Math.Round的double重載,需要調用decimal重載 Math.Round((decimal)0.145, 2, MidpointRounding.AwayFromZero)
Math.Round((decimal)0.145, 2, MidpointRounding.ToEven)
運行結果: 0.15
0.14
下面來看下:MidpointRoundingToEven:當一個數字是其他兩個數字的中間值時,會將其舍入爲最接近的偶數。
AwayFromZero:當一個數字是其他兩個數字的中間值時,會將其舍入爲兩個值中絕對值較小的值。
在默認情況下都是使用ToEven,在上面的代碼中可以發現。
在SQLServer數據庫中也存在類似情況,在開發過程中,寫了函數處理該情況,可以參考http://blog.csdn.net/mh942408056/article/details/8234320