对字符串“3 + 4”中的值执行计算

时间:2009-09-06 19:21:24

标签: c#

对字符串中的值进行计算的最佳方法是什么,例如: “(3.25 * 4)/ 1.25 + 10”

3 个答案:

答案 0 :(得分:7)

您需要编写数学公式解析器。 如果你不想自己编写,请查看这个

http://www.codeproject.com/KB/cs/MathParserLibrary.aspx

答案 1 :(得分:1)

你见过http://ncalc.codeplex.com吗?

它是可扩展的,快速的(例如有自己的缓存)使您能够通过处理EvaluateFunction / EvaluateParameter事件在运行时提供自定义函数和变量。它可以解析的示例表达式:

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());

它还处理unicode&许多数据类型原生。如果你想改变语法,它会附带一个鹿茸文件。还有一个支持MEF加载新功能的fork。

它还支持逻辑运算符,日期/时间的字符串和if语句。

答案 2 :(得分:0)

从中缀转换为后缀表示法是解决此问题的一种方法,因为您可以使用堆栈来解析和计算表达式。

网上有十几种解决方案。这是one of them

相关问题