Ejemplo n.º 1
0
        } // _Number_Comparable_Impl_


        //public static IComparable<object> getComparable(object o)
        //{
        //    NNumber n = toNumber(o);
        //    return new _Number_Comparable_Impl_(_instance, n);
        //} // getComparable()


        public int Compare(object o1, object o2)
        {
            NNumber n1 = toNumber(o1);
            NNumber n2 = toNumber(o2);

            if (n1 == null && n2 == null)
            {
                return(0);
            }
            if (n1 == null)
            {
                return(-1);
            }
            if (n2 == null)
            {
                return(1);
            }

            if (n1 is NNumber && n2 is NNumber)
            {
                return((n1.asBigInteger()).CompareTo(n2.asBigInteger()));
            }

            //if (n1 is BigDecimal && n2 is BigDecimal) {
            //    return ((BigDecimal)n1).compareTo((BigDecimal)n2);
            //}

            if (NumberComparator.IsIntegerType(n1) && NumberComparator.IsIntegerType(n2))
            {
                return(NInteger.ValueOf(n1).CompareTo(n2.asLong()));
            }

            return(NNumber.ValueOf(n1).CompareTo(n2.asLong()));
        } // Compare()