在C#中,我正在寻找一种方法来解决像这样的简单方程。Z = A + B
我正在尝试构建一个类,如果我给出其他两个参数中的任何一个,就会给我第三个参数。
例如,给定Z=A+B
如果你知道A=3和B=6,那么你就知道Z=9
如果你知道A=4和Z=8,那么你就知道B=4
如何在软件中最好地执行这些类型的任务?
另一个想法是使用数学表达式求值,比如ncalc。他们可以解释数学表达式,例如将3*(8+2)转换为30,但不能像3*(8+x)=30 --> x=2那样求解方程。
发布于 2013-09-07 23:04:07
你确定NCalc不会照你说的做吗?看看来自http://ncalc.codeplex.com/的一个例子。
定义参数,甚至是动态或表达式
Expression e = new Expression("Round(Pow([Pi], 2) + Pow([Pi2], 2) + [X], 2)");
e.Parameters["Pi2"] = new Expression("Pi * [Pi]");
e.Parameters["X"] = 10;
e.EvaluateParameter += delegate(string name, ParameterArgs args)
  {
    if (name == "Pi")
    args.Result = 3.14;
  };
Debug.Assert(117.07 == e.Evaluate());请注意,这是未经测试的--但看起来你可以用NCalc做类似这样的事情:
var e = new Expression("[A] + [B]"); 
e.Parameters = /* your input */ 
var result = e.Evaluate(); 发布于 2013-09-08 00:29:23
试试C# Expression Evaluator ,看看它是否符合您的需求。
https://stackoverflow.com/questions/18674416
复制相似问题