Exemplo n.º 1
0
        /// <summary>
        /// Rounds the specified value.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <param name="RoundMode">The round mode.</param>
        /// <param name="decimals">The decimals.</param>
        /// <param name="MidPointRounding">The mid point rounding.</param>
        /// <returns></returns>
        public static decimal Round(decimal value, Calc.RoundMode RoundMode, int decimals, System.MidpointRounding MidPointRounding)
        {
            switch (RoundMode)
            {
            case RoundMode.RoundUp:
                decimal OriginalDecimal = default(decimal);
                if (decimals == 0)
                {
                    OriginalDecimal = value;
                    value           = Math.Truncate(value);
                    if (OriginalDecimal != value)
                    {
                        value = value + 1;
                    }
                }
                else
                {
                    decimal MultiplyPower = Convert.ToDecimal(Math.Pow(10, decimals));
                    value           = value * MultiplyPower;
                    OriginalDecimal = value;
                    value           = Math.Truncate(value);
                    if (OriginalDecimal != value)
                    {
                        value = value + 1;
                    }
                    value = SafeDiv(value, MultiplyPower);
                }

                return(value);

            case RoundMode.RoundDown:
                if (decimals == 0)
                {
                    value = Math.Truncate(value);
                }
                else
                {
                    decimal MultiplyPower = Convert.ToDecimal(Math.Pow(10, decimals));
                    value = value * MultiplyPower;
                    value = Math.Truncate(value);
                    value = SafeDiv(value, MultiplyPower);
                }

                return(value);

            case RoundMode.RoundUpOrDown:
                return(Math.Round(value, decimals, MidPointRounding));
            }

            //Should never happen
            return(0);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Rounds the specified value.
 /// </summary>
 /// <param name="value">The value.</param>
 /// <param name="RoundMode">The round mode.</param>
 /// <param name="decimals">The decimals.</param>
 /// <returns></returns>
 public static decimal Round(decimal value, Calc.RoundMode RoundMode, int decimals)
 {
     return(Round(value, RoundMode, decimals, System.MidpointRounding.AwayFromZero));
 }