最近接触金融计算的业务,其中涉及到人民币最小交易单位为分,所以需要有四舍五入、只入不舍、只舍不入三种末位保留算法的选择,以防忘记,记录一下
decimal serviceCharge = 0; //四舍五入(默认的Round方法使用的四舍六入五保留的算法,所以得改为AwayFromZero,且保留两位小数) serviceCharge = Math.Round(serviceCharge, 2, MidpointRounding.AwayFromZero); //只入不舍(默认计算保留到整数位,所以需要乘100) serviceCharge = (Math.Ceiling(serviceCharge * 100) / 100); //只舍不入(默认计算保留到整数位,所以需要乘100) serviceCharge = (Math.Floor(serviceCharge * 100) / 100);