首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#解最简单的方程

C#解最简单的方程
EN

Stack Overflow用户
提问于 2013-09-07 22:38:04
回答 2查看 15K关注 0票数 4

在C#中,我正在寻找一种方法来解决像这样的简单方程。Z = A + B

我正在尝试构建一个类,如果我给出其他两个参数中的任何一个,就会给我第三个参数。

例如,给定Z=A+B

如果你知道A=3B=6,那么你就知道Z=9

如果你知道A=4Z=8,那么你就知道B=4

如何在软件中最好地执行这些类型的任务?

另一个想法是使用数学表达式求值,比如ncalc。他们可以解释数学表达式,例如将3*(8+2)转换为30,但不能像3*(8+x)=30 --> x=2那样求解方程。

EN

回答 2

Stack Overflow用户

发布于 2013-09-07 23:04:07

你确定NCalc不会照你说的做吗?看看来自http://ncalc.codeplex.com/的一个例子。

定义参数,甚至是动态或表达式

代码语言:javascript
运行
复制
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做类似这样的事情:

代码语言:javascript
运行
复制
var e = new Expression("[A] + [B]"); 
e.Parameters = /* your input */ 
var result = e.Evaluate(); 
票数 2
EN

Stack Overflow用户

发布于 2013-09-08 00:29:23

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18674416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档