我使用MathNet.Symbolics
库来简化这样的表达式:
string f = Infix.Print(Infix.ParseOrThrow("A+5*2"))
这可以按预期工作(f = A+10
)但是尝试获取数字的根比我预期的要困难得多。例如:
string f = Infix.Print(Infix.ParseOrThrow("sqrt(9)"))
f = "sqrt(9)
"而不是你期望的f = "3"
。
string f = Infix.Print(Infix.ParseOrThrow("sqrt(x^2)"))
f = "sqrt(x^2)"
f = "x"
string f = Infix.Print(Infix.ParseOrThrow("9^(1/2)"))
也不起作用。它被简化为f = "sqrt(9)"
如何强制它计算数字/变量的sqrt?
在使用"自动简化"时,我可能会遇到任何其他问题。 MathNet.Symbolics
的?
答案 0 :(得分:2)
您需要通过Evaluate
方法运行表达式:
string f = Infix.Print(Infix.ParseOrThrow("sqrt(9)"));
double result = Evaluate.Evaluate(null, f);