无法使用Mathos Math Parser评估数学表达式

时间:2014-10-28 05:32:33

标签: javascript c# parsing math evaluation

我正在使用Mathos Math parser来评估数学表达式。我试图解析下面的表达式,但它抛出FormatException - 输入字符串格式不正确..

Mathos.Parser.MathParser parser = new Mathos.Parser.MathParser();
string expression = "Math.pow((4),(5))"; //Or "Math.sqrt(1)";
string result = parser.Parse(expression).ToString();

在我的应用程序中,我使用MathDox mathml编辑器,它给了我mathml。使用这个mathml我使用javascript将其解析为普通的数学表达式给定here,然后将此表达式发送到我的c#代码进行评估。 我的表达方式错了。

注意:由于某些条件,我没有在javascript中评估数学表达式。

1 个答案:

答案 0 :(得分:0)

它不起作用的原因是因为 pow 函数被定义为localFunction。下面的代码应该有效:

Mathos.Parser.MathParser parser = new Mathos.Parser.MathParser();
string expression = "pow(4,5)"; 
string result = parser.Parse(expression).ToString();

// or

string expression2 = "4^5"; 
string result2 = parser.Parse(expression2).ToString();

Assert.AreEqual(result, result2);

基本上,为了使用Math.Pow功能,您可以使用内置功率运算符内置功率函数

您可以随时更改电源功能的定义。这是当前的定义:

  1. 电源功能:LocalFunctions.Add("pow", x => (decimal)Math.Pow((double)x[0], (double)x[1]));
  2. 电源操作员:OperatorList.Add("^");OperatorAction.Add("^", (numberA, numberB) => (decimal)Math.Pow((double)numberA, (double)numberB));