数学表达式求值程序的简单库或实现

Biw*_*ier 14 c c# c++ c++11

我有一个只包含一行的文本文件,该行只包含一个数学表达式,例如12+(3.0*(4)-1)/ sqrt(121)

我的程序需要将此express表示为字符串,然后给出结果
13

是否有任何简单的方法或第三方dll/lib来实现这一目标?

评论增加:

评估一串简单的数学表达式

这里是解决方案,但许多解决方案只包含+ - /*,我需要尽可能多的运营商,如天花板方形平方根和功率()

所以这个链接可能是最好的解决方案
http://www.codeproject.com/KB/recipes/sota_expression_evaluator.aspx

小智 13

使用ExprTk库可以轻松获得以下简单的解决方案:

#include <cstdio>
#include <string>

#include "exprtk.hpp"

int main()
{
   typedef exprtk::expression<double> expression_t;
   typedef exprtk::parser<double>         parser_t;

   std::string expression_string = "12 + (3.0 * (4) - 1) / sqrt(121)";

   expression_t expression;

   parser_t parser;

   if (parser.compile(expression_string,expression))
   {
     double result = expression.value();

     printf("Result: %19.15\n",result);
   }
   else
     printf("Error in expression\n.");

   return 0;
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*nko 1

.NET 解决方案:

\n\n

这里有几个关于SO的主题:

\n\n\n\n
\n\n

还有我之前已经使用过的两个项目:

\n\n

C#:NCalc - 适用于 .NET 的数学表达式计算器

\n\n
\n

NCalc 是 .NET 中的数学表达式计算器。NCalc 可以解析任何表达式并计算结果,包括静态或动态参数以及自定义函数。

\n
\n\n
\n\n

VB.NET:快速轻量级表达式评估器

\n\n
\n

Flee 是 .NET 框架的表达式解析器和求值器。它允许您在运行时计算字符串表达式的值,例如 sqrt(a^2 + b^2)。它使用自定义编译器、强类型表达式语言和轻量级代码生成器将表达式直接编译为 IL。这意味着表达式求值极其快速且高效。尝试一下演示,它可以让您根据表达式生成图像,并亲自查看。

\n
\n\n

您可以将它与 C# 一起使用,因为无论如何它都是 .NET(通过程序集引用)。

\n