有没有MathParser可以解析包含平均函数的数学字符串表达式,如avg(value1+value2+value3)+



我有一个文本框,我只需键入一个数学表达式,如:

sin(1) + 2 + cos(5) + sqrt(5)

并将其传递给我的MathParser类对象,它会返回结果。

我复习了这门课,发现对于像+、-、*、/这样的数学运算符;有一个函数返回2,因为这些运算只能在两个参数(如"1+2")和数学函数(如sin、cos、tan、abs、sqrt)之间执行;有一个单独的参数,比如sin(param)等,所以它返回1。

现在,我也想添加average函数,但问题是,当我键入表达式avg(1+2+3+4)时,它优先将括号放在第一位,并将所有数字相加,这很好,但对于average,我需要该函数中传递的参数数。我设法计算出了第一个平均值,但如果它与其他函数一起发生,或者发生不止一次呢?

有没有什么mathParser可以内置avg函数?我在Visual Studio数学课上也看不到它。

是的,有一个开源的数学解析器支持variadic函数(包括average),我最近在我的项目中使用了它。解析程序名称为mXparser。Parser分别用C#和JAVA实现。

https://mxparser.codeplex.com/

http://mathparser.org/

你的问题可以简单地解决,请按照下面的示例

包括变参数的简单平均

Expression e = new Expression("avg(2, 5, 6, 34, 2, 10) + avg(5, 4, 32)");
double v = e.calculate()

变参数中包含变量的简单平均

Argument x = new Argument("x = 5");
Expression e = new Expression("avg(2, 5, 2*x, 34, 2, 10) + avg(5, 4*x, 32)", x);
double v = e.calculate()

平均作为迭代算子

Expression e = new Expression("avg(i, 1, 100, i^2);
double v = e.calculate()

向致以最良好的问候

最新更新