<%@ Page masterpagefile="~/programarpor.master" language="VB" title="EvaluarExpresiones" %> <%@ Import Namespace="elGuille.Developer" %>
Utilidades

EvaluarExpresiones

Librería (DLL) con funciones para evaluar expresiones aritméticas y funciones predefinidas


Publicado: 11/Oct/2007
Actualizado: 17/Oct/2007
Autor: Guillermo 'guille' Som
 

elGuille.EvaluarExpresiones es una DLL (ensamblado de .NET 2.0) que contiene dos clases para realizar cálculos a partir de una cadena con las operaciones a realizar.

Las dos clases que contiene son:

Esas clases se pueden usar creando una instancia y usando el método Evalua o bien se puede usar el método compartido Evaluar, con lo que no será necesario crear un objeto en la memoria.

En el caso de Factorial, el valor máximo soportado es 170!, cualquier valor mayor de 170 produce Infinito.
No es problema de la DLL, sino que .NET no soporta valores mayores de 1,79769313486232E+308
y el factorial de 170 es 7,25741561530799E+306, así que...

Si te interesa, el factorial de 171 es:
12410180702176678234248405241031039926166055775016931853889518036119960752216917 52992751978120487585576464959501670387052809889858690710767331242032218484364310 47357788996854827829075454156196485215346831804429323959817369689965723590394761 6152278558180061176365108428800000000000000000000000000000000000000000
Y si no me crees... ¡haz el cálculo! ;-)))

Como te imaginarás, existen relaciones entre los operadores y algunas funciones, por ejemplo:
10 m 3  es lo mismo que Mod(10, 3)
10 * 2 es lo mismo que Mult(10, 2)
10 / 2 es lo mismo que Div(10, 2)
10 \ 2 es lo mismo que DivInt(10, 2)
10 ^ 2 es lo mismo que Pow(10, 2)
10 + 2 es lo mismo que Sum(10, 2)
10 - 2 es lo mismo que Subst(10, 2)
10 % 2 es lo mismo que Percent(10, 2)

También existen funciones que están es castellano, por ejemplo:
Suma, Resta, Divide, Multiplica, Porcentaje y Factorial.

Igualmente, hay funciones que hacen lo mismo, pero que usan dos nombres (independiente de que estén en inglés):
Sqr y Sqrt. Esto es porque en VB6 se usa Sqr y en la clase Math, se usa Sqrt (nostálgico que es uno).
Sgn y Sign, mismo motivo que la anterior, Sgn es la compatible con VB6 y Sign es la de la clase Marh.

Además de los cálculos, también existen 5 métodos que se pueden usar para convertir entre tipos numéricos:

En los cuatro primeros casos, el parámetro que recibe es de tipo Object, que se convierte a Long (Int64) y devuelve una cadena (String).
BinToDec, recibe una cadena y devuelve un Long (Int64). Se ignorará cualquier cosa que no sea un 0 o un 1.

 

Nota del 17/Oct/07:
Las actualizaciones a esta librería las iré publicando en la página de Actualizaciones de EvaluarExpresiones.

 


El código fuente

El código fuente de la librería

Las actualizaciones


Para que lo pruebes

Pulsa aquí si quieres probar estas clases: Calculadora para distintas bases numéricas