コード例 #1
0
 public void Add_Exp(string str)
 {
     if (chart1.Series.IndexOf(str) != -1)
     {
         chart1.Series[str].Points.Clear();
     }
     else
     {
         chart1.Series.Add(str);
     }
     chart1.Series[str].ChartType = SeriesChartType.Line;
     str = graphAdd.get_Expression();
     try
     {
         MathParser g = new MathParser();
         double     y;
         for (double i = xmin; i <= xmax; i += 0.01F)
         {
             g.setArgumentValue(i);
             y = g.Calculate(str);
             if (Math.Abs(y) > 99999 || Math.Abs(y) < -99999)
             {
             }
             else
             {
                 if (y != double.NaN)
                 {
                     chart1.Series[str].Points.AddXY(i, y);
                 }
             }
         }
     }
     catch {}
 }
コード例 #2
0
ファイル: Program.cs プロジェクト: yoyojds/MathParser
        static void Main(string[] args)
        {
            IContext context = new Context();

            context.AddConst("a", 0.2);
            context.AddConst("b", 0.3);
            context.AddConst("c", -0.3);

            var mathParser = new MathParser(context);

            try
            {
                var result = mathParser.Calculate("2+3*4");

                if (result.IsValid)
                {
                    Console.WriteLine($"result = {result.Result}");
                }
                else
                {
                    Console.WriteLine(String.Join(Environment.NewLine, result.Errors));
                }
            }
            catch (InvalidOperationException ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadKey();
        }
コード例 #3
0
        private void button15_Click(object sender, EventArgs e)
        {
            string     str = textBox_Result.Text;
            MathParser g   = new MathParser();

            textBox_Result.Text = g.Calculate(str).ToString();
            result = textBox_Result.Text;
        }
コード例 #4
0
        private void button12_Click(object sender, EventArgs e)
        {
            MathParser g = new MathParser();

            try
            {
                string str = textBox2.Text;
                g.setArgumentValue(Convert.ToDouble(str));
                labelResult.Text = g.Calculate(textBox1.Text).ToString();
            }
            catch { }
        }
コード例 #5
0
ファイル: MathParserTests.cs プロジェクト: yoyojds/MathParser
        public void WhenExpressionIsCorrect_Then_ResultIsReturned(string expression, double result)
        {
            var context = new Context();

            context.AddConst("b", 0.2);

            var mathParser = new MathParser(context);

            var calculationResult = mathParser.Calculate(expression);

            Assert.True(calculationResult.IsValid);
            Assert.True(calculationResult.Result == result);
        }
コード例 #6
0
 private void _transaction_CellEndEdit(object sender, DataGridViewCellEventArgs e)
 {
     if (e.ColumnIndex == 0)
     {
         if (_transaction.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null &&
             _transaction.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()[0] == '=')
         {
             //if this is a formula then let's process it
             MathParser parser = new MathParser();
             string     tmp    = _transaction.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
             decimal    value  = parser.Calculate(tmp.Substring(1, tmp.Length - 1));
             _transaction.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = value;
         }
     }
 }
コード例 #7
0
        private static bool DoMath(VM interpreter, Token <R> firstToken, PatternReader reader, State state)
        {
            var tokens = reader.ReadToTokenInParentScope(firstToken.ID, Delimiters.All);

            interpreter.PushState(State.CreateSub(reader.Source, tokens, interpreter));
            state.Pre(new DelegateBlueprint(interpreter, _ =>
            {
                var expression = _.PopResultString().Trim();
                var v          = MathParser.Calculate(_, expression);
                if (!expression.EndsWith(";"))
                {
                    _.Print(_.FormatNumber(v));
                }
                return(false);
            }));
            return(true);
        }
コード例 #8
0
        public void Calculate(float scale)
        {
            if (!_active)
            {
                return;
            }

            if (!_parsed)
            {
                _parsed = ParseFormula();
            }

            if (_source != null)
            {
                _parser.Parameters[MathParser.Variables.X] = _source.Value;
            }

            _parser.Parameters[MathParser.Variables.F] = _fixedValue;
            _parser.Parameters[MathParser.Variables.S] = _nw.Seed;
            _parser.Parameters[MathParser.Variables.R] = _random.NextDouble();
            _value = _parser.Calculate(_formula) * scale;
//			_value = Utils.Math.Clamp(_value, 0.0, 1.0);
        }
コード例 #9
0
        private void button1_Click(object sender, EventArgs e)
        {
            var chart = chart1.ChartAreas[0];

            chart.AxisX.IntervalType = DateTimeIntervalType.Number;

            chart.AxisX.LabelStyle.Format            = "";
            chart.AxisY.LabelStyle.Format            = "";
            chart.AxisY.LabelStyle.IsEndLabelVisible = true;
            chart.AxisX.Maximum  = xmax;
            chart.AxisX.Minimum  = xmin;
            chart.AxisY.Maximum  = ymax;
            chart.AxisY.Minimum  = ymin;
            chart.AxisX.Interval = xint;
            chart.AxisY.Interval = yint;

            chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.LightGray;
            chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.LightGray;



            if (chart1.Series.IndexOf("First") != -1)
            {
                chart1.Series["First"].Points.Clear();
            }
            else
            {
                chart1.Series.Add("First");
            }

            chart1.Series["First"].ChartType = SeriesChartType.Line;
            chart1.Series["First"].Color     = Color.Blue;



            if (chart1.Series.IndexOf("AxisX") != -1)
            {
                chart1.Series["AxisX"].Points.Clear();
            }
            else
            {
                chart1.Series.Add("AxisX");
            }

            chart1.Series["AxisX"].ChartType = SeriesChartType.Line;
            chart1.Series["AxisX"].Color     = Color.Black;
            chart1.Series["AxisX"].Points.AddXY(0, ymax);
            chart1.Series["AxisX"].Points.AddXY(0, ymin);

            if (chart1.Series.IndexOf("AxisY") != -1)
            {
                chart1.Series["AxisY"].Points.Clear();
            }
            else
            {
                chart1.Series.Add("AxisY");
            }


            chart1.Series["AxisY"].ChartType = SeriesChartType.Line;
            chart1.Series["AxisY"].Color     = Color.Black;
            chart1.Series["AxisY"].Points.AddXY(xmin, 0);
            chart1.Series["AxisY"].Points.AddXY(xmax, 0);
            chart1.Legends.Clear();
            ChartArea CA = chart1.ChartAreas[0];  // quick reference

            CA.AxisX.ScaleView.Zoomable                  = true;
            CA.CursorX.AutoScroll                        = true;
            CA.CursorX.IsUserSelectionEnabled            = true;
            chart1.ChartAreas[0].AxisX.LabelStyle.Format = ("#0.00");
            chart1.ChartAreas[0].AxisY.LabelStyle.Format = ("#0.00");

            try
            {
                MathParser g = new MathParser();
                double     y;
                if (g.check(textBox1.Text))
                {
                    for (double i = xmin; i <= xmax; i += 0.01F)
                    {
                        g.setArgumentValue(i);
                        y = g.Calculate(textBox1.Text);
                        if (y != double.NaN)
                        {
                            if (Math.Abs(y) > 99999 || Math.Abs(y) < -99999)
                            {
                            }
                            else
                            {
                                chart1.Series["First"].Points.AddXY(i, y);
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Invalid expression.");
                }
            }
            catch
            {
            }
        }