public static MathExpression Parse(string input, MathFormat inputFormat)
        {
            if (input.Contains("+"))
            {
                return(new AddExpression(input, inputFormat));
            }

            if (input.Contains("/"))
            {
                return(new DivideExpression(input, inputFormat));
            }

            if (input.Contains("*"))
            {
                return(new MultiplyExpression(input, inputFormat));
            }

            if (input.Contains("-"))
            {
                return(new SubtractExpression(input, inputFormat));
            }

            if (input.Contains("√"))
            {
                return(new RootExpression(input, inputFormat));
            }

            if (input.Contains("exp"))
            {
                return(new ExponentExpression(input, inputFormat));
            }

            return(new UnaryExpression(input, inputFormat));
        }
        public UnaryExpression(object value, MathFormat inputFormat = MathFormat.Decimal)
        {
            InputString = Convert.ToString(value);
            InputFormat = inputFormat;

            Result = value;

            if (value is string)
            {
                if (inputFormat == MathFormat.Binary)
                {
                    Result = Convert.ToInt32((string)value, 2);
                }

                else if (inputFormat == MathFormat.Octal)
                {
                    Result = Convert.ToInt32((string)value, 8);
                }

                else if (inputFormat == MathFormat.Hexadecimal)
                {
                    Result = Convert.ToInt32((string)value, 16);
                }

                else
                {
                    Result = Convert.ToDouble((string)value);
                }
            }

            else if (value is double)
            {
                Result = Math.Round((double)value, 10);
            }
        }
 public RootExpression(string input, MathFormat inputFormat) : base(input, inputFormat)
 {
 }
 public SubtractExpression(string input, MathFormat inputFormat) : base(input, inputFormat)
 {
 }
예제 #5
0
 public DivideExpression(string input, MathFormat inputFormat) : base(input, inputFormat)
 {
 }
 protected BinaryExpression(string input, MathFormat inputFormat)
 {
     InputString = input;
     InputFormat = inputFormat;
 }
 protected UnaryExpression EvaluateToExpressionResult(string expression, MathFormat inputFormat = MathFormat.Decimal)
 {
     return(new SimpleCalculator().Evaluate(expression, inputFormat));
 }
예제 #8
0
 public MathExpression Parse(string input, MathFormat inputFormat = MathFormat.Decimal)
 {
     return(MathExpression.Parse(input, inputFormat));
 }
예제 #9
0
        public UnaryExpression Evaluate(string input, MathFormat inputFormat = MathFormat.Decimal)
        {
            MathExpression expression = Parse(input, inputFormat);

            return(expression.Evaluate());
        }
예제 #10
0
 public MultiplyExpression(string input, MathFormat inputFormat) : base(input, inputFormat)
 {
 }