Esempio n. 1
0
        public virtual int Sign(object value)
        {
            StorageType storageType = DataStorageHelper.GetStorageType(value.GetType());

            if (!DataStorageHelper.IsInteger(storageType))
            {
                if (!DataStorageHelper.IsNumeric(storageType))
                {
                    throw InvalidExpressionException.ArgumentTypeInteger(nameof(Sign), 1);
                }
                try
                {
                    return(Math.Sign((Decimal)value));
                }
                catch (Exception ex)
                {
                    return(Math.Sign((double)value));
                }
            }
            else
            {
                try
                {
                    return(Math.Sign((int)value));
                }
                catch (Exception ex)
                {
                    return(Math.Sign((long)value));
                }
            }
        }
Esempio n. 2
0
        public virtual object Min(object value1, object value2)
        {
            StorageType storageType1 = DataStorageHelper.GetStorageType(value1.GetType());
            StorageType storageType2 = DataStorageHelper.GetStorageType(value2.GetType());

            if (DataStorageHelper.IsInteger(storageType1))
            {
                if (DataStorageHelper.IsInteger(storageType2))
                {
                    try
                    {
                        return((object)Math.Min((int)value1, (int)value2));
                    }
                    catch (Exception ex)
                    {
                        return((object)Math.Min((long)value1, (long)value2));
                    }
                }
            }
            if (DataStorageHelper.IsNumeric(storageType1))
            {
                if (DataStorageHelper.IsNumeric(storageType2))
                {
                    try
                    {
                        return((object)Math.Min((Decimal)value1, (Decimal)value2));
                    }
                    catch (Exception ex)
                    {
                        return((object)Math.Min((double)value1, (double)value2));
                    }
                }
            }
            throw InvalidExpressionException.ArgumentTypeInteger(nameof(Min), 1);
        }
Esempio n. 3
0
        public virtual object Min(object value1, object value2)
        {
            StorageType storageType1 = DataStorageHelper.GetStorageType(value1.GetType());
            StorageType storageType2 = DataStorageHelper.GetStorageType(value2.GetType());

            if (!(DataStorageHelper.IsInteger(storageType1) && DataStorageHelper.IsInteger(storageType2)))
            {
                if (!(DataStorageHelper.IsNumeric(storageType1) && DataStorageHelper.IsNumeric(storageType2)))
                {
                    throw InvalidExpressionException.ArgumentTypeInteger("Min", 1);
                }

                try
                {
                    return(Math.Min((decimal)value1, (decimal)value2));
                }
                catch (Exception)
                {
                    return(Math.Min((double)value1, (double)value2));
                }
            }

            try
            {
                return(Math.Min((int)value1, (int)value2));
            }
            catch (Exception)
            {
                return(Math.Min((long)value1, (long)value2));
            }
        }
Esempio n. 4
0
        public virtual object Abs(object value)
        {
            if (value == null || DBNull.Value == value)
            {
                return((object)null);
            }
            StorageType storageType = DataStorageHelper.GetStorageType(value.GetType());

            if (!DataStorageHelper.IsInteger(storageType))
            {
                if (!DataStorageHelper.IsNumeric(storageType))
                {
                    throw InvalidExpressionException.ArgumentTypeInteger(nameof(Abs), 1);
                }
                try
                {
                    return((object)Math.Abs((Decimal)value));
                }
                catch (Exception ex)
                {
                    return((object)Math.Abs((double)value));
                }
            }
            else
            {
                try
                {
                    return((object)Math.Abs((int)value));
                }
                catch (Exception ex)
                {
                    return((object)Math.Abs((long)value));
                }
            }
        }
Esempio n. 5
0
        public virtual object Abs(object value)
        {
            if (null == value || DBNull.Value == value)
            {
                return(null);
            }

            StorageType storageType = DataStorageHelper.GetStorageType(value.GetType());

            if (!DataStorageHelper.IsInteger(storageType))
            {
                if (!DataStorageHelper.IsNumeric(storageType))
                {
                    throw InvalidExpressionException.ArgumentTypeInteger("Abs", 1);
                }

                try
                {
                    return(Math.Abs((decimal)value));
                }
                catch (Exception /*e*/)
                {
                    return(Math.Abs((double)value));
                }
            }

            try
            {
                return(Math.Abs((int)value));
            }
            catch (Exception /*e*/)
            {
                return(Math.Abs((long)value));
            }
        }