Ejemplo n.º 1
0
        public Numeric Round(int sc)
        {
            if (scale <= sc)
            {
                return(Denormalise(sc - scale));
            }
            Integer m  = mantissa;
            bool    sg = m.Sign;

            if (sg)
            {
                m = -m;
            }
            Integer d = Integer.Pow10(scale - sc);
            Integer n = (m / d) * d;
            Integer r = m - n;

            if (r.Times(2).CompareTo(d) >= 0)
            {
                n = n + d;
            }
            if (sg)
            {
                n = -n;
            }
            return(new Numeric(n, scale));
        }
Ejemplo n.º 2
0
        public static Numeric Floor(Numeric x)
        {
            Integer m  = x.mantissa;
            bool    sg = m.Sign;

            if (sg)
            {
                m = -m;
            }
            Integer d = Integer.Pow10(x.scale);
            Integer n = (m / d) * d;

            if (sg)
            {
                n = -n;
            }
            if (n > x.mantissa)
            {
                n = n - d;
            }
            return(new Numeric(n, x.scale));
        }