C#.Net工作笔记006---关于各种四舍五入_小数点保留第几位等操作_随时更新
发布日期:2021-06-29 18:07:26 浏览次数:2 分类:技术文章

本文共 1277 字,大约阅读时间需要 4 分钟。

今天做项目,各种切小数点,金融中可能用的不是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的情况比较特殊,如果前面是奇数,则升上去,反之,则截掉,在金融结算中,经常使用该方法,来平衡双方的盈亏

 

转载地址:https://credream.blog.csdn.net/article/details/89479807 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C#.Net工作笔记005---c#中list合并去重_以及单纯合并_值类型list去重
下一篇:C#.Net工作笔记004---visual studio中的小技巧提高开发效率_随时更新

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年05月02日 08时20分48秒