gpt4 book ai didi

c# - NCalc Evaluate() 给出错误答案

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:19 26 4
gpt4 key购买 nike

我在使用 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。怎么了?

最佳答案

因为 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();
}

关于c# - NCalc Evaluate() 给出错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50076395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com