Saltar al contenido

Analizar expresión matemática

Solución:

Insto a tener precaución contra la elección de un evaluador de expresiones genéricas existente en lugar de un evaluador matemático especialmente diseñado. La razón de esto es que los evaluadores de expresiones no se limitan solo a las matemáticas. Un individuo inteligente podría usar esto para crear una instancia de cualquier tipo en el marco y llamar a cualquier método del tipo, y eso le permitiría hacer algunas cosas decididamente no deseadas. Por ejemplo: new System.Net.WebClient().DownloadFile("illegalchildpornurl", "C:openme.gif") evaluará bien en la mayoría de ellos, y hará exactamente lo que parece (y lo convertirá en un delincuente al mismo tiempo).

Esto no significa que no busque algo que ya esté escrito. Solo significa tener cuidado. Quieres uno que haga matemáticas y solo matemáticas. La mayor parte de lo que ya está disponible no es tan exigente.

Recientemente estuve usando mXparser, que es una biblioteca de analizador matemático. Te da mucha flexibilidad, como variables, funciones, constantes, operadores. A continuación encontrará algunos ejemplos de uso:

Ejemplo 1: fórmula simple

Expression e = new Expression("1 + pi");
double v = e.calculate();

Ejemplo 2: fórmula con variables, funciones, etc.

Argument x = new Argument("x = 2");
Constant a = new Constant("a = sin(10)");
Function f = new Function("f
Expression e = new Expression("2*x + a - f(10)", x, a, f);
double v = e.calculate();

https://mxparser.codeplex.com/

mXparser – Math Expression Evaluator / Parser – Library Description

Encontrado recientemente: puede probar la sintaxis (y ver el caso de uso) a través de la aplicación Scalar Calculator que funciona con mXparser.

Atentamente

Puede intentar usar DataTable.Compute.

Uno relacionado es DataColumn.Expression.

También echa un vistazo: Hacer matemáticas en vb.net como Eval en javascript

Nota: no los he usado yo mismo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *