最佳和最短的方法来评估数学表达式 [英] Best and shortest way to evaluate mathematical expressions
本文介绍了最佳和最短的方法来评估数学表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有很多算法来评估表达式,例如:
There are many algorithms to evaluate expressions, for example:
- By Recursive Descent
- Shunting-yard algorithm
- Reverse Polish notation
有没有办法使用C#.net反射或其他现代的.net技术?
Is there any way to evaluate any mathematical expression using C# .net reflection or other modern .net technology?
推荐答案
除了Thomas的答案,实际上可以直接从C#访问(不推荐使用)的JScript库,这意味着您可以使用相当于JScript的 eval
函数。
Further to Thomas's answer, it's actually possible to access the (deprecated) JScript libraries directly from C#, which means you can use the equivalent of JScript's eval
function.
using Microsoft.JScript; // needs a reference to Microsoft.JScript.dll
using Microsoft.JScript.Vsa; // needs a reference to Microsoft.Vsa.dll
// ...
string expr = "7 + (5 * 4)";
Console.WriteLine(JScriptEval(expr)); // displays 27
// ...
public static double JScriptEval(string expr)
{
// error checking etc removed for brevity
return double.Parse(Eval.JScriptEvaluate(expr, _engine).ToString());
}
private static readonly VsaEngine _engine = VsaEngine.CreateEngine();
这篇关于最佳和最短的方法来评估数学表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文