本文共 1277 字,大约阅读时间需要 4 分钟。
今天做项目,各种切小数点,金融中可能用的不是4舍5入,可能是4舍6入5成双.
用下面的方法可以实现,一个方法,一个重载方法
public static decimal CutDecimalWithN(decimal d, int n) { string strDecimal = d.ToString(); int index = strDecimal.IndexOf("."); if (index == -1 || strDecimal.Length < index + n + 1) { strDecimal = string.Format("{0:F" + n + "}", d); } else { int length = index; if (n != 0) { length = index + n + 1; } strDecimal = strDecimal.Substring(0, length); } return Decimal.Parse(strDecimal); } public static decimal CutDecimalWithN(decimal? d, int n) { if (d==null) { return Decimal.MinValue; } return CutDecimalWithN(Convert.ToDecimal(d), n); }
decimal.Round(xx, decimalPos, MidpointRounding.ToEven);
VS
decimal.Round(xx, decimalPos, MidpointRounding.AwayFromZero);
AwayFromZero, 就是常用的四舍五入.
ToEven, 就比较特别了,称为就近舍入或四舍六入五成双
e.g.
22.333 to 22.33
22.335 to 22.34 22.325 to 22.32 22.336 to 22.34 22.326 to 22.33后面是5的情况比较特殊,如果前面是奇数,则升上去,反之,则截掉,在金融结算中,经常使用该方法,来平衡双方的盈亏
转载地址:http://altdf.baihongyu.com/