C#.Net工作笔记006---关于各种四舍五入_小数点保留第几位等操作_随时更新

技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152 

今天做项目,各种切小数点,金融中可能用的不是4舍5入,可能是4舍6入5成双.

1.关于截取小数点第几位(保留几位小数,非4舍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);
        }

2. decimal.Round 四舍五入和银行家算法的(四舍六入五成双)

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的情况比较特殊,如果前面是奇数,则升上去,反之,则截掉,在金融结算中,经常使用该方法,来平衡双方的盈亏
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

添柴程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值