Kingdee.BOS.MathUtil.Round 十进制四舍五入/双精度数四舍五入

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:2

Kingdee.BOS.MathUtil.Round 十进制四舍五入/双精度数四舍五入

#region 程序集 Kingdee.BOS, Version=7.7.2297.10, Culture=neutral, PublicKeyToken=null

// D:\WorkSpace\SZLS\HANS_CLOUD\K3Cloud\BIN\Kingdee.BOS.dll

// Decompiled with ICSharpCode.Decompiler 6.1.0.5902

#endregion


using System;


namespace Kingdee.BOS

{

    //

    // 摘要:

    //     数学运算工具类

    public class MathUtil

    {

        //

        // 摘要:

        //     四舍五入模式,可配置 暂时设置为四舍六入五成双

        private static MidpointRounding mode;


        //

        // 摘要:

        //     十进制四舍五入

        public static decimal Round(decimal value, int decimals = 0, RoundMode mode = RoundMode.AwayFromZero)

        {

            if (mode == RoundMode.AwayFromZero || mode == RoundMode.ToEven)

            {

                MidpointRounding midpointRounding = MidpointRounding.AwayFromZero;

                if (mode == RoundMode.ToEven)

                {

                    midpointRounding = MidpointRounding.ToEven;

                }


                return Math.Round(value, decimals, midpointRounding);

            }


            decimal d = Convert.ToDecimal(Math.Pow(10.0, decimals));

            decimal d2 = value * d;

            d2 = ((mode != RoundMode.Carry) ? Math.Truncate(d2) : Math.Ceiling(d2));

            return d2 / d;

        }


        //

        // 摘要:

        //     双精度数四舍五入

        //

        // 参数:

        //   value:

        //

        //   digits:

        public static double Round(double value, int digits = 0, RoundMode mode = RoundMode.AwayFromZero)

        {

            if (mode == RoundMode.AwayFromZero || mode == RoundMode.ToEven)

            {

                MidpointRounding midpointRounding = MidpointRounding.AwayFromZero;

                if (mode == RoundMode.ToEven)

                {

                    midpointRounding = MidpointRounding.ToEven;

                }


                return Math.Round(value, digits, midpointRounding);

            }


            double num = Math.Pow(10.0, digits);

            double num2 = value * num;

            num2 = ((mode != RoundMode.Carry) ? Math.Truncate(num2) : Math.Ceiling(num2));

            return num2 / num;

        }

    }

}


Kingdee.BOS.MathUtil.Round 十进制四舍五入/双精度数四舍五入

#region 程序集 Kingdee.BOS, Version=7.7.2297.10, Culture=neutral, PublicKeyToken=null// D:\WorkSpace\SZLS\HANS_CLOUD\K3Cloud...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息