【问题标题】:How to convert a string c# equation to an answer如何将字符串 c# 方程转换为答案
【发布时间】:2014-07-14 16:27:58
【问题描述】:

我正在构建一个 WP8 应用程序,它正在解决数值分析问题。一步我需要解析输入的函数,但我对解析一无所知,我尝试了其他方法

我有一个带有数学组件(Sin(x)、Cos(x)、Tan(x)、+、-、*...)的堆栈面板

当用户点击任何组件时

例如首先 罪(x) 然后是 + 然后是 Cos(x)

string yazılıdenklem =""; int xdegeri=Convert.ToInt32(Xtxt.Text);

private void Sin_Tapped(object sender, TappedRoutedEventArgs e)
    {

        yazılıdenklem=yazılıdenklem+"Math.Sin("+xdegeri.ToString()+")";

    }

 private void artı_Tapped(object sender, TappedRoutedEventArgs e)
    {

        yazılıdenklem = yazılıdenklem + "+";
    }
 private void Cos_Tapped(object sender, TappedRoutedEventArgs e)
    {

        yazılıdenklem = yazılıdenklem + "Math.Cos(" + xdegeri.ToString() + ")";
    }

选择结束后,我有一个字符串方程,例如:“Math.Sin(3)+Math.Cos(3)”,我可以将这个方程转换为任何数值形式吗?我可以从这个字符串 eq 中得到任何结果吗? ?谢谢

【问题讨论】:

  • 阅读NCalc库。
  • @KonradKokosa NCalc 库不支持 win 8 或 win 8.1

标签: c# windows windows-phone-8.1 equation equation-solving


【解决方案1】:

bcParser.NET 是一个安全的 eval() 函数来评估数学公式。 bcParser.NET 是 .NET 平台的数学解析器库。 bcParser.NET 在运行时解析和评估作为字符串给出的数学表达式。

MathParser.SetExpression("sin(3)+cos(3)");
double value = MathParser.getValueAsDouble();

【讨论】:

  • 我添加了 bcParser dll 并像 MathParser parser = new MathParser(); parser.SetVariable("sin(3)+cos(3)", 15); double result = parser.ValueAsDouble; Denklem.Text = result.ToString(); 这样编写了我的代码,但它不工作它说 Additional information: sin(3)+cos(3) is not a valid variable name.
  • 它工作了,代码中只有一个错误parser.SetVariable 不工作使用 parser.Expression 代替。谢谢@JeevaMahendran
  • 但是 bcParser 不是免费的
猜你喜欢
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 2010-12-15
  • 1970-01-01
相关资源
最近更新 更多