| Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS | ||||
15/1/08 - Necesitaba esta función para calcular el IVA en una aplicación de facturación. Como el IVA siempre se redondea hacia arriba, no me valía la función round() que viene en Visual Basic Script de ASP. Bueno, me valía, pero tenía que hacer luego unos ajustes para asegurarme que el redondeo lo hacía por alto.
Como estoy trabajando con Euros, tengo que utilizar siempre dos decimales, aunque he parametrizado los decimales que queremos redondear para que esta función de redondeo por alto siempre funcione para lo que se llaman en matemáticas números reales, sean cuales sean los números en coma flotante (decimales) que tengamos.
Así, esta función tiene dos parámetros siempre. El primero es el número a redondear y el segundo el número de decimales que queremos. Por ejemplo, voy a poner ahora varios valores a redondear por arriba para que se entienda lo que estoy diciendo:
Valor 3 (decimales 0) - Resultado: 3
Valor 3,5 (decimales 0) - Resultado: 4
Valor 3,59 (decimales 1) - Resultado: 3,6
Valor 3,55045 (decimales: 2) - Resultado: 3,56
El código de la función es el siguiente. Viene comentado para entenderse mejor.
'funcion que redondea por arriba
function redondear_arriba(valor,decimales)
'response.write "<p>Valor: " & valor
'response.write "<br>decimales: " & decimales
if (decimales = 0) then
'es que no se desean decimales, puedo devolver la parte entera
'pero si el número tiene decimales, tengo que redondear por arriba
if (int(valor)-valor < 0) then
'es que había decimales en el valor, devuelvo el valor entero + 1
redondear_arriba = int(valor) + 1
else
'es que no había decimales
redondear_arriba = valor
end if
else
'es que nos han dado un valor de decimales y hay que redondear con esos decimales
redondeo = round(valor, decimales)
'si el redondeo es por bajo lo hago por arriba
if (valor - redondeo) > 0 then
redondeo = redondeo + (1/(calcula_base_exponente(10,decimales)))
redondeo = round (redondeo,decimales)
end if
redondear_arriba=redondeo
end if
end function
La función parece larga, porque tiene mucho comentario y algún response.write para mostrar el estado de las variables. Pero en realidad es simple.
Tiene dos partes, una para el redondeo de números sin decimales y otra para el redondeo cuando se desean decimales. Cuando no se quieren usar decimales simplemente devuelvo la parte entera y veo si el número original tenía decimales, porque entonces hay que redondear hacia arriba, sumando 1 a la parte entera.
Cuando se pide redondeo con un número de decimales mayor que cero, se utiliza la función round() que viene de salida con ASP y Visual Basic Script.
Referencia: tenemos una explicación sobre la función round() y la función int() que utilizamos en el código anterior en el artículo redondear decimales en ASP
| Referencia: tenemos una explicación sobre la función round() y la función int() que utilizamos en el código anterior en el artículo redondear decimales en ASP |
| Autoría, licencia y acciones sobre este artículo | ||||||
|
Informe de Luis Javier Alvarez*
URL: http://www.guiarte.com Atención: Copyright. Este artículo no se puede reproducir sin la autorización expresa del autor. * Para consultas técnicas utilizar la lista de correo.
|
| Comentarios sin revisar |
| Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente. |
| Ver los comentarios no revisados |
| Añadir un comentario del artículo |
| Enlaces: |
| Maestrosdelweb |
Lectura recomendada Compra este libro en Agapea, la librería urgente a domicilio. |
||||||||
Tienda DesarrolloWeb