¿Existe alguna manera fácil de evaluar cadenas como "(4+8)*2"
para que obtenga el valor int de 24?Evalúe la cadena C# con los operadores matemáticos
¿O hay mucho trabajo para hacer esto ...?
¿Existe alguna manera fácil de evaluar cadenas como "(4+8)*2"
para que obtenga el valor int de 24?Evalúe la cadena C# con los operadores matemáticos
¿O hay mucho trabajo para hacer esto ...?
Uso Ncalc:
Expression e = new Expression("(4+8)*2");
Debug.Assert(24 == e.Evaluate());
Además, esta pregunta se le había pedido previamente y tiene algunas respuestas interesantes incluyendo Ncalc: Evaluating string "3*(4+2)" yield int 18
Necesita un analizador de expresiones matemáticas para eso. A continuación se presentan los recursos de que:
Otra persona añadido este y luego se borraron. Pensé que era genial porque no se necesitan bibliotecas de terceros.
class Program { static void Main(string[] args) { Console.WriteLine(Evaluate("(4+8)*2")); Console.ReadKey(); } public static double Evaluate(string expression) { DataTable table = new DataTable(); table.Columns.Add("expression", typeof(string), expression); DataRow row = table.NewRow(); table.Rows.Add(row); return double.Parse((string)row["expression"]); } }
En Para mi uso, esta solución era aproximadamente 1.5 veces más rápida que NCalc, mientras que era igualmente estable (al menos por lo que estaba haciendo). Manejó expresiones booleanas igual que NCalc. Esto debería publicitarse más. – tootsiejasmine
Esto no maneja poderes o raíces cuadradas. – seekerOfKnowledge
esta solución es perfecta para expresiones simples según lo necesite. Gracias por volver a publicarlo. – zreptil
Puede echar un vistazo a: [La expresión evaluador revisited (función Eval en el 100% .NET administrado)] (http://www.codeproject.com/KB/recipes/eval3.aspx) –