【问题标题】:Perform calculation on values in a string "3+4"对字符串“3+4”中的值执行计算
【发布时间】:2009-09-06 19:21:23
【问题描述】:

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

【问题讨论】:

标签: c#


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你见过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 和许多数据类型。如果您想更改语法,它会附带一个 antler 文件。还有一个 fork 支持 MEF 加载新功能。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-01-10
        • 1970-01-01
        • 2012-11-30
        • 2014-02-17
        • 1970-01-01
        • 2013-02-19
        • 2017-04-06
        • 2020-04-17
        • 2013-09-06
        相关资源
        最近更新 更多