【问题标题】:NCalc Evaluate() gives wrong answerNCalc Evaluate() 给出错误答案
【发布时间】:2018-04-28 20:26:19
【问题描述】:

我在使用 NCalc 时遇到了问题:我正在尝试实现一种方法,通过将表达式写入我的程序中,将其写入文本框中,然后让程序使用它来对变量进行求和/乘法运算。 这是一个例子:

Expression expr = new Expression(textBox3.Text);
        expr.Parameters["a"] = 1;
        expr.Parameters["b"] = textBox2.Text;             
        textBox1.Text = expr.Evaluate().ToString();

我想在 textBox3 中写入表达式,在 textBox2 中写入“b”变量的值,并将结果收集到 textBox1 中。 但是,例如,如果我尝试使用:

  • textBox2 = "3"

  • textBox3 = "b+a"

结果是“31”而不是 4。 怎么了?

【问题讨论】:

    标签: c# ncalc


    【解决方案1】:

    因为textBox2.Textstring 类型,所以您的参数b 是字符串“3”而不是数字3。如果一个参数是字符串而另一个是数字 - NCalc(也适用于字符串)将转换数字转字符串,就像 C# 本身一样:

    string s = "3" + 1; // 31
    

    所以要解决这个问题,把字符串转成数字(当然可以先检查一下是否可以转换):

    int b;
    if (int.TryParse(textBox2.Text, out b)) {
        Expression expr = new Expression(textBox3.Text);
        expr.Parameters["a"] = 1;
        expr.Parameters["b"] = b;      
        textBox1.Text = expr.Evaluate().ToString();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 2014-06-04
      • 1970-01-01
      相关资源
      最近更新 更多