4

在 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

4

2 回答 2

2

你确定 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-07T15:04:06.993 回答
-1

试用C# Expression Evaluator,看看它是否符合您的要求。

于 2013-09-07T16:29:22.650 回答