Math.Round函數

Math.Round這個函數的解釋是將值按指定的小數位數舍入,並不就是四捨五入這種舍入有時稱為就近舍入或四舍六入五成雙

其實在 VB, VBScript, C#, J#, T-SQL 中 Round 函數都是採用 Banker's rounding(銀行家舍入)演算法,即四舍六入五取偶。事實上這也是 IEEE 規定的舍入標準。因此所有符合 IEEE 標準的語言都應該是採用這一演算法的。

如果大家想要四舍五入,記得要加上參數MidpointRounding.AwayFromZero

decimal a_Round = 0;

            a_Round = Math.Round(Convert.ToDecimal("5.265"), 2);  //結果為5.26  (銀行家舍入算法 MidpointRounding.ToEven參數)

            a_Round = Math.Round(Convert.ToDecimal("5.266"), 2); //結果為5.27   (銀行家舍入算法 MidpointRounding.ToEven參數)

            a_Round = Math.Round(Convert.ToDecimal("5.275"), 2); //結果為5.28   (銀行家舍入算法 MidpointRounding.ToEven參數)

            a_Round = Math.Round(Convert.ToDecimal("5.265"), 2, MidpointRounding.AwayFromZero);  //結果為5.27  (四舍五入算法)

            a_Round = Math.Round(Convert.ToDecimal("5.265"), 2, MidpointRounding.ToEven);        //結果為5.26  (銀行家舍入算法)

            a_Round = Math.Round(Convert.ToDecimal("5.275"), 2, MidpointRounding.AwayFromZero);  //結果為5.28  (四舍五入算法)

            a_Round = Math.Round(Convert.ToDecimal("5.275"), 2, MidpointRounding.ToEven);        //結果為5.28  (銀行家舍入算法)

MS SQL並不是

MS SQL的Round函數是四舍五入的

原文地址:https://www.cnblogs.com/guyuehuanhuan/p/3964444.html