C#中Math.Round()方法默认重载实现的不是常有的四舍五入方法,而是四舍六入五求偶方法(也叫四舍六入五成双)。
一、四舍六入五成双
四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则。
这一方式的另一个常见名称为“银行家舍入”,是IEEE754标准_百度百科的推荐舍入标准。
具体规则如下:
1. 被修约的数字小于5时,该数字舍去;
2. 被修约的数字大于5时,则进位;
3. 被修约的数字等于5时,要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉,即修约后末尾数字都成为偶数;若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。
二、四舍五入
如果要使用Math.Round()实现四舍五入,要用重载方法decimal Round(decimal d, int decimals, MidpointRounding mode)
这样计算出来的小数才是真正的中国式四舍五入!!