Exemplo n.º 1
0
        internal static double Round(double number, int rem, RoudingMode roundMode)
        {
            var unit = 1d;

            if (rem <= 0)
            {
                rem  = MathHelper.Clamp(-rem, 0, 15);
                unit = Math.Pow(10, -rem - 1);
            }
            else
            {
                unit = Math.Pow(10, rem - 1);
            }

            if (roundMode == RoudingMode.Celling)
            {
                number = Math.Round((number + unit / 2) / unit, 0) * unit;
            }
            else
            {
                number = Math.Round((number - unit / 2) / unit, 0) * unit;
            }
            return(number);
            //    if (roundMode == RoudingMode.Floor)
            //    {
            //        return Math.Round(number - unit / 2, rem + 1);
            //    }
            //    else
            //    {
            //        return Math.Round(number + unit / 2, rem + 1);
            //    }
            //}
            //else
            //{
            //    if (roundMode == RoudingMode.Celling)
            //    {
            //        var unit = Math.Pow(10, rem - 1);
            //        number = Math.Round((number + unit / 2) / unit, rem - 1) * unit;

            //        //upperBound = Math.Ceiling(number);
            //        //upperBound = upperBound + 5 - upperBound % 5;
            //    }
            //    else
            //    {
            //        var unit = Math.Pow(10, rem - 1);
            //        number = Math.Round((number - unit / 2) / unit, rem - 1) * unit;

            //        //upperBound = Math.Floor(number);
            //        //upperBound = upperBound - upperBound % 5;
            //    }

            //    return number;
            //}
        }
Exemplo n.º 2
0
        internal static double Round(double number, int rem, RoudingMode roundMode)
        {
            var unit = 1d;

            if (rem <= 0)
            {
                rem  = MathHelper.Clamp(-rem, 0, 15);
                unit = Math.Pow(10, -rem - 1);
            }
            else
            {
                unit = Math.Pow(10, rem - 1);
            }

            if (roundMode == RoudingMode.Celling)
            {
                number = Math.Round((number + unit / 2) / unit, 0) * unit;
            }
            else
            {
                number = Math.Round((number - unit / 2) / unit, 0) * unit;
            }
            return(number);
        }