Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Diseño web | Promoción web | Ganar dinero
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Función ASP para redondear por alto números reales


Una función en ASP para redondear números reales, con decimales, pero siempre haciendo el redondeo hacia arriba.


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

Luego hago un cálculo para saber si el valor redondeado fue hecho por abajo, porque entonces tiene que ser por arriba. Para ello hago una operación de sumar al número redondeado un valor decimal. Si nos pidieron redondeo de 1 decimal, le sumo una décima, si nos pidieron número con dos decimales, le sumo una centésima, si fueron 3 decimales los solicitados, sumo una milésima y así.

Espero que se entienda y sirva de algo para los lectores.

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 1 comentario no revisado

 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.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Taller de ASP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Scripts en ASP


 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se ha encontrado un comentario sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Taller de ASP
Categorías
+Scripts en ASP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia