我正在使用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中评估数学表达式。
答案 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功能,您可以使用内置功率运算符或内置功率函数。
您可以随时更改电源功能的定义。这是当前的定义:
LocalFunctions.Add("pow", x => (decimal)Math.Pow((double)x[0], (double)x[1]));
OperatorList.Add("^");
和OperatorAction.Add("^", (numberA, numberB) => (decimal)Math.Pow((double)numberA, (double)numberB));