Parse Math Expression

I urge caution against choosing an existing generic expression evaluator over a purpose-built math evaluator. The reason for this is that the expression evaluators are not limited to just math. A clever individual could use this to create an instance of any type in the framework and call any method on the type, and that would allow him to do some decidedly unwelcome things. For example: new System.Net.WebClient().DownloadFile("illegalchildpornurl", "C:\openme.gif") will evaluate just fine in most of those, and do just what it sounds like it would (and make you a felon at the same time).

This doesn't mean don't look for something that's already written. It just means be careful. You want one that does math, and only math. Most of what's already out there isn't that picky.


I was recently using mXparser, which is a math parser library. It gives you a lot of flexibility, such as variables, functions, constants, operators. You will find below a few usage examples:

Example 1 - simple formula

Expression e = new Expression("1 + pi");
double v = e.calculate();

Example 2 - formula with variables, functions, etc.

Argument x = new Argument("x = 2");
Constant a = new Constant("a = sin(10)");
Function f = new Function("f(t) = t^2");
Expression e = new Expression("2*x + a - f(10)", x, a, f);
double v = e.calculate();

https://mxparser.codeplex.com/

https://mathparser.org/

Found recntly - you can try the syntax (and see the use case) via the Scalar Calculator app that is powered by mXparser.

Best regards


You can try using DataTable.Compute.

A related one is DataColumn.Expression.

Also check out: Doing math in vb.net like Eval in javascript

Note: I haven't used these myself.

Tags:

C#

.Net

C# 4.0