visual matematicas expresiones evaluar evaluador c# math calculator

matematicas - C#Calculadora matemática




DataTable tiene un método Compute que le permite escribir esto:

var result = new DataTable().Compute("2-3/4*12", null);

Tenga en cuenta que esto se limita a expresiones matemáticas simples.

Otra opción consiste en utilizar un lenguaje dinámico en el DLR, como IronPython e IronRuby. Mira esta publicación :

var engine = new IronPython.Hosting.PythonEngine(); double result = pythonEngine.EvaluateAs<double>("2-3/4*12");

También puede consultar la biblioteca de NCalc en GitHub .


Definitivamente en la categoría "no recomendar", pero para completarlo: si tiene una base de datos a la que puede conectarse cómodamente, envíele la consulta "SELECCIONAR expresión ".


Echa un vistazo a FLEE (Evaluador rápido de expresiones livianas) - http://flee.codeplex.com/

Flee es un analizador de expresiones y un evaluador para .NET framework. Le permite calcular el valor de expresiones de cadena tales como sqrt (a ^ 2 + b ^ 2) en tiempo de ejecución. Utiliza un compilador personalizado, un lenguaje de expresión fuertemente tipado y un codegen liviano para compilar expresiones directamente a IL. Esto significa que la evaluación de expresiones es extremadamente rápida y eficiente. Pruebe la demostración, que le permite generar imágenes basadas en expresiones, y compruébelo usted mismo.

Es gratis y rápido y lo he usado en un par de proyectos.



Hay algunas opciones interesantes disponibles para ti.

  1. NCalc : un analizador Lexer C # construido con ANTLR . Esto analizará su texto y le permitirá asignar valores a parámetros / variables. El intérprete es C #, por lo que no tiene que cargar montajes adicionales en un dominio de aplicación, etc.

  2. JINT : un intérprete de JavaScript basado en C # creado por el mismo autor de ECalc que usa ANTLR para crear la gramática. Actualmente se encuentra en versión beta, pero funciona bien con cálculos y funciones.

  3. CS-Script.Net : desde el sitio: "CS-Script es un sistema de scripts basado en CLR (Common Language Runtime) que usa C # compatible con ECMA como lenguaje de programación. Actualmente, CS-Script se dirige a la implementación de Microsoft de CLR (.NET 2.0 / 3.0 / 3.5) con soporte limitado en Mono ". Cargue los scripts y cree ensamblajes en la memoria y en el dominio de la aplicación por separado. Es bastante robusto y lo uso en producción para scripts incorporados.



NB: Esta respuesta es solo para completar. Definitivamente no es un enfoque que recomendaría.

Es posible acceder a las bibliotecas JScript (obsoletas) directamente desde C #, lo que significa que puede usar el equivalente de la función de eval de JScript.

using Microsoft.JScript; // needs a reference to Microsoft.JScript.dll using Microsoft.JScript.Vsa; // needs a reference to Microsoft.Vsa.dll // ... string expr = "2 - 3 / 4 * 12"; Console.WriteLine(JScriptEval(expr)); // displays -7 // ... public static VsaEngine _engine = VsaEngine.CreateEngine(); public static double JScriptEval(string expr) { // error checking etc removed for brevity return double.Parse(Eval.JScriptEvaluate(expr, _engine).ToString()); }