对字符串中的值进行计算的最佳方法是什么,例如: “(3.25 * 4)/ 1.25 + 10”
答案 0 :(得分:7)
您需要编写数学公式解析器。 如果你不想自己编写,请查看这个
答案 1 :(得分:1)
你见过http://ncalc.codeplex.com吗?
它是可扩展的,快速的(例如有自己的缓存)使您能够通过处理EvaluateFunction / EvaluateParameter事件在运行时提供自定义函数和变量。它可以解析的示例表达式:
Expression e = new Expression("Round(Pow(Pi, 2) + Pow([Pi2], 2) + X, 2)");
e.Parameters["Pi2"] = new Expression("Pi * Pi");
e.Parameters["X"] = 10;
e.EvaluateParameter += delegate(string name, ParameterArgs args)
{
if (name == "Pi")
args.Result = 3.14;
};
Debug.Assert(117.07 == e.Evaluate());
它还处理unicode&许多数据类型原生。如果你想改变语法,它会附带一个鹿茸文件。还有一个支持MEF加载新功能的fork。
它还支持逻辑运算符,日期/时间的字符串和if语句。
答案 2 :(得分:0)
从中缀转换为后缀表示法是解决此问题的一种方法,因为您可以使用堆栈来解析和计算表达式。
网上有十几种解决方案。这是one of them。