Home - ASP - Curso práctico - Capítulo 5 - 1 - 2 - 3
Curso práctico de ASP (V)
por Luciano Moreno, del departamento de diseño web de BJS
Software.
Funciones numéricas (I).-
Los datos numéricos son fundamentales en multitud de aplicaciones web. Transformar cadenas en números, operar con ellos, cambiar unos formatos numéricos en otros, etc., son tareas frecuentes en todo desarrollo.
Cuando un usuario visita nuestras páginas y cumplimenta un formulario en ellas, nosotros deseamos que los datos que ha Vamos a ver entonces las principales funciones que nos ofrece ASP+VBScript para el manejo de expresiones numéricas, dejando por ahora a un lado las funciones trigonométricas y exponenciales.
Abs( número / variable / expresión )
Recibe como argumento un número, una variable numérica o una expresión que la contenga, devolviendo su valor absoluto. Por lo tanto, si el número es positivo lo deja como estaba, y si es negativo le cambia el signo, transformándolo en su opuesto, por lo que devuelve el mismo número sin signo (como positivo).
Si le pasamos como argumento un valor Null nos devuelve Null, y si le pasamos como argumento una variable sin inicializar nos devuelve cero (0). Si le pasamos una variable nos devuelve el valor absoluto del número que en ese momento contenga la variable.
Ejemplo:
<%
Dim
miNumero
miNumero = Abs(5-7)
%>
Que nos devolverá 2 como valor de miNumero ( Abs(5-7) = Abs(-2) = 2 )
Fix( numero / variable / expresion )
Recibe como argumento un número, una variable que lo contenga o una expresión numérica válida, retornando, si el argumento es positivo, el primer número entero menor o igual que dicho argumento, y si es negativo, el primer número entero mayor o igual que dicho argumento.
La función Fix es análoga a la función Int, salvo en que Int retorna el primer número entero menor o igual que el recibido como argumento, sea éste positivo o no. Es decir, la diferencia entre ambas funciones se encuentra en el tratamiento que hacen ambas de los números negativos.
Vamos a ver esto con un ejemplo:
<%
Dim MiNumero1, MiNumero2,
MiNumero3, MiNumero4
MiNumero1 =
Int(15,8)
MiNumero2 = Fix(15,8)
MiNumero3 = Int(-15,8)
MiNumero4 = Fix(-15,8)
%>
Con lo que tendremos:
MiNumero1 = MiNumero2 = 15
MiNumero3 = -16
MiNumero4 = -15
FormatCurrency( numero [, digitos_decimales, cero_decimal, negativos_parentesis, agrupar_digitos] )
Función de formato. Se usa para representar números con formato de moneda, usando para ello el símbolo de moneda definido en el panel de control del sistema. Recibe o puede recibir los siguientes argumentos:
- numero: número, variable que lo contenga o expresión numérica válida que hay que representar con formato de moneda. Es un argumento obligatorio.
- digitos_decimales: especifica cuántos dígitos queremos que se muestren a la derecha de la coma digital. Es un argumento opcional, con valor predeterminado de -1, que indica que se utiliza la configuración regional del equipo.
- cero_digital: que especifica si se quiere completar con ceros en el caso de que el número de decimales del argumento numero sea menor que el especificado en el argumento digitos_decimales. Es un argumento opcional, cuyos valores pueden ser -1 (se completan los decimales con ceros) y 0 (no se completan).
- negativos_parentesis: que especifica si los números negativos deben aparecer entre paréntesis o no. Es un argumento opcional, cuyos posibles valores son -1 (aparecerán entre paréntesis) y 0 (no aparecerán).
- agrupar_digitos: que especifica si deseamos agrupar los dígitos en el número formateado. Es un argumento opcional, y sus posibles valores son -1 (los agrupa según esté especificado en la configuración regional del equipo) y 0 (no los agrupa).
Para todos los argumentos opcionales, si no se especifica alguno de ellos se tomará por defecto lo indicado en la configuración regional de equipo.
Ejemplo: Si en nuestro equipo tenemos configurada como moneda el euro y como formato de moneda el que agrupa los dígitos de 3 en 3 y con 2 decimales:
<%
Dim
MiDinero
MiDinero = FormatCurrency(12000)
%>
Que retorna como valor de MiDinero 12.000,00 € (si la configuración regional del usuario está establecida a formato euro con dos decimales y agrupación de números).
El principal problema que presenta el guardar datos de precios en formato moneda es que la presentación en pantalla va a depender de la configuración regional que el usuario tenga establecida en su máquina. Por ello, es preferible guardar los valores con formato numérico (simple o doble), operar con ellos en este formato y luego añadirles el símbolo de la moneda correspondiente al presentarlos en pantalla.
FormatNumber( numero [, digitos_decimales, cero_decimal, negativos_parentesis, agrupar_digitos] )
Función de formato. Funciona exactamente igual que la función FormatCurrency, y recibe los mismos argumentos. La diferencia entre ambas es que FormatNumber no asocia ninguna moneda al número resultante. Se usa pues para dar un formato de decimales y grupos de millares a un número o expresión que lo represente.
Ejemplo:
<%
Dim
MiCoseno
Dim MiAngulo
Dim MiNumero
MiAngulo = 1.5
MiCoseno =
Cos(MiAngulo)
MiNumero = FormatNumber(MiCoseno,
4)
%>
Y en este caso MiCoseno vale 0.99965732497555728003676088836768, mientras que MiNumero vale 0.9996 (4 decimales).
Esta función se presta mucho mejor a la hora de operar con valores numéricos, sobre todo si tenemos que trabajar con ellos en cliente con JavaScript. Este lenguaje sólo reconoce de forma correcta como números los expresados en el formato 1235.20, por lo que se hace preciso transformar todos aquellos valores con los que debamos operar a este formato.
FormatPercent( numero [, digitos_decimales, cero_decimal, negativos_parentesis, agrupar_digitos] )
Función de formato. Los argumentos son análogos a los de la función anterior, pero ésta retorna un número formateado en forma de tanto por ciento, es decir, el número multiplicado por 100 seguido del símbolo %.
Ejemplo:
<%
Dim
MiNumero
MiNumero = FormatPercent(0.6512)
%>
Que retorna como valor de MiNumero 65.12%
Int( numero / variable / expresion )
Recibe como argumento un número, una variable que lo contenga o una expresión numérica válida, devolviendo la parte entera de dicho número, es decir, el menor número entero más próximo al recibido como argumento. Para ello, elimina la parte fraccionaria del mismo.
La diferencia entre las funciones Int y Fix está en el tratamiento de números negativos. Así, Int devuelve el primer número entero negativo menor o igual que número, mientras que Fix devuelve el primer número entero negativo mayor o igual que número.
Ejemplo:
<%
Dim MiNumeroUno, MiNumeroDos,
MiNumeroTres, MiNumeroCuatro
MiNumeroUno =
Int(12,78)
MiNumeroDos = Fix(12,78)
MiNumeroTres = Int(-12,78)
MiNumeroCuatro = Fix(-12,78)
%>
Que retornan MiNumeroUno = 12, MiNumeroDos = 12, MiNumeroTres = -13, MiNumeroCuatro = -12.
La equivalencia entre ambas funciones podemos expresarla como:
Fix (numero) = Sgn(numero) * Int(Abs(numero))
IsNull( expresion )
Función de comprobación. Recibe como argumento una expresión cualquiera, comprueba si ésta tiene datos no válidos y retorna un valor booleano según el resultado. Si la expresión es Null (contiene datos no válidos) devuelve true; si no, devuelve false. Si expresion contiene más de una variable, retornará true en cuanto una de ellas sea Null. Aunque esta función no es específica de datos numéricos, se puede usar para evaluar si los datos de una expresión numérica son o no nulos. También sirve para comprobar otros tipos de expresiones.
Ejemplo:
<%
Dim MiVariable,
MiPrueba
MiVariable = Null
MiPrueba
= IsNull(MiVariable)
%>
Con lo que MiPrueba contiene true.
IsNumeric( expresion )
Función de comprobación. Recibe como argumento una expresión cualquiera, comprueba si ésta se puede evaluar como un número y retorna un valor booleano según el resultado. Si TODA la expresión se puede resolver como un número devuelve true; si no, devuelve false. Si expresion contiene más de una variable, retornará false en cuanto una de ellas sea Null. Si expresion es una expresión de fecha, retorna false.
Ejemplo:
<%
Dim MiVariable,
MiPrueba
MiVariable = "358A"
MiPrueba =
IsNumeric(MiVariable)
%>
Con lo que MiPrueba contiene false.
Home - ASP - Curso práctico - Capítulo 5 - 1 - 2 - 3