C#中的Math.Round()并不是使用的"四舍五入"法。其实在VB、VBScript、C#、J#、T-SQL中Round函数都是采用Banker's rounding(银行家算法),即:四舍六入五取偶。事实上这也是IEEE的规范,因此所有符合IEEE标准的语言都应该采用这样的算法。
Math.Round(0.5) == 0
但是想实现真正以上的上四舍五入该怎么办呢?
Math.Round(value,MidpointRounding.AwayFromZero);
Math.Round(0.5,MidpointRounding.AwayFromZero) == 1
如果想保留几位小数,写法跟以前还是一样的,举个栗子
Math.Round(0.55555,2,MidpointRounding.AwayFromZero) == 0.56