Пример #1
0
        /// <summary>
        /// Get epsilon value for fuzzy numeric comparisons = .5 * 10**(-decimals)
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>

        public double GetNumericValueEpsilon()
        {
            if (MetaColumn == null || !MetaColumn.IsDecimal)
            {
                return(0);
            }

            int decimals = MetaColumn.Decimals;             // default to metacolumn decimals

            if (Decimals >= 0)
            {
                decimals = Decimals;                            // use QC decimals if defined
            }
            double epsilon = MobiusDataType.GetEpsilon(decimals);

            return(epsilon);
        }
Пример #2
0
        /// <summary>
        /// Initialize internal match values for a single rule
        /// </summary>
        /// <param name="columnType"></param>

        public void InitializeInternalMatchValues(MetaColumnType columnType)
        {
            OpCode = ConvertOpNameToCode(Op);

            bool calculateEpsilonFromCfValue = false;             // if true use cf value (note: may not be same number of decimals as output format)

            Epsilon = 0;

            if (MetaColumn.IsNumericMetaColumnType(columnType) && !String.IsNullOrEmpty(Value))
            {
                double.TryParse(Value, out ValueNumber);

                if (calculateEpsilonFromCfValue)
                {
                    Epsilon = MobiusDataType.GetEpsilon(Value);
                }

                else
                {
                    int decimals = 10;                     // use default epsilon value
                    Epsilon = MobiusDataType.GetEpsilon(decimals);
                }
            }

            else if (columnType == MetaColumnType.Date && !String.IsNullOrEmpty(Value))
            {
                ValueNormalized = DateTimeMx.Normalize(Value);
            }

            if (MetaColumn.IsNumericMetaColumnType(columnType) && !String.IsNullOrEmpty(Value2))
            {
                double.TryParse(Value2, out Value2Number);
                double e2 = MobiusDataType.GetEpsilon(Value2);
                if (e2 < Epsilon)
                {
                    Epsilon = e2;
                }
            }
            else if (columnType == MetaColumnType.Date && !String.IsNullOrEmpty(Value2))
            {
                Value2Normalized = DateTimeMx.Normalize(Value2);
            }
        }