javascript - 无法使用Mathos数学Prser来评估数学表达式

  显示原文与译文双语对照的内容
0 0

我正在使用 Mathos数学分析器来评估数学表达式。 试图解析下列表达式,但它抛出的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,我将它解析为使用javascript的普通数学表达式,并将这个表达式发送到我的C# 代码,以便进行评估。 表达式中有什么错误。

注意:由于某些条件,我不计算javascript中的数学表达式。

时间: 原作者:

0 0

它不工作的原因是 pow函数定义为。 代码 below 应该工作:


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 函数,你可以使用 power build build或者power内置的power函数。

你可以随时更改幂函数的定义。 这是当前的defiinition:

  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));
原作者:
...