Foros del Web » Programando para Internet » Javascript »

redondear al valor entero superior

Estas en el tema de redondear al valor entero superior en el foro de Javascript en Foros del Web. Estoy creando una web para la empresa donde trabajo, en la que se pueden hacer presupuestos personalizados en la propia web mediante operaciones matemáticas en ...
  #1 (permalink)  
Antiguo 10/05/2005, 02:00
 
Fecha de Ingreso: marzo-2005
Mensajes: 62
Antigüedad: 19 años, 8 meses
Puntos: 0
redondear al valor entero superior

Estoy creando una web para la empresa donde trabajo, en la que se pueden hacer presupuestos personalizados en la propia web mediante operaciones matemáticas en javascript.

Esta mañana, empezaba a crear la página de presupuestos para impresión de grandes formatos en plotter, en la cual facturamos la impresión por metro cuadrado (siempre en rangos sobre el valor entero superior): si imprimimos 5 metros, facturamos 5 metros. Si imprimimos 5,1 metros, facturamos 6. Si imprimimos 5,9 metros, facturamos 6.

he intentado redondear sin decimales, pero obviamente me redondea al valor inferior mediante este código:
Cita:
function Redondea (amount)
{ var val = parseFloat(amount);
if (isNaN(val)) { return "0.00"; }
if (val <= 0) { return "0.00"; } else { val= Math.round(val*1)/1}
val = (val == Math.floor(val)) ? val + '.00' : ((val*10 == Math.floor(val*10)) ? val + '0' : val);
return val;
}
realmente no tengo mucha idea de javascript (aunque lo suficiente para ir modificando la web en la que he encontrado este script para adaptarla a mis necesidades).

¿saben como hacer que me redondee automaticamente al valor entero superior en esta operación?
Cita:
CANT3.value = Redondea (parseFloat ((CANT2.value * CMM2.value) * (CANT1.value * CMM1.value)));

CANT3.value = Resultado de la operación y valor que quiero que redondee
CANT2.value = ancho de impresión
CMM2.value = desplegable donde selecciono si la medida es cm o m (multiplico por 1 en caso de que sea metros, o por 0.01 en caso de que sean centímetros)
CANT1.value = alto de impresión
CMM1.value = desplegable donde selecciono si la medida es cm o m (igual a CMM1.value)

Última edición por inter981; 10/05/2005 a las 02:53
  #2 (permalink)  
Antiguo 10/05/2005, 03:29
 
Fecha de Ingreso: marzo-2005
Mensajes: 62
Antigüedad: 19 años, 8 meses
Puntos: 0
por favor ayuda...
  #3 (permalink)  
Antiguo 10/05/2005, 03:38
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 20 años, 3 meses
Puntos: 5
Hola inter981

Math.floor() redondea a la baja, para redondear a la alta tienes Math.ceil()

Un saludo.
  #4 (permalink)  
Antiguo 10/05/2005, 03:39
Avatar de txarly  
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 455
Antigüedad: 21 años, 8 meses
Puntos: 2
Puedes utilizar la función ceil:

Código PHP:
var valor Math.ceil(5.95) ;
alert(valor); // el resultado es 6 
Un saludo
__________________
¿Por qué Uri Geller doblaba cucharas?
  #5 (permalink)  
Antiguo 10/05/2005, 04:35
 
Fecha de Ingreso: marzo-2005
Mensajes: 62
Antigüedad: 19 años, 8 meses
Puntos: 0
He hecho lo que me has dicho... y ha salido bien "a medias"...
Me redondea al alza... ok, pero sólo en los valores superiores a x.5
o sea... para un valor 1.20 me lo deja en 1.00 (mal)
para 1.30, también (mal)
para 1.50 me lo manda a a 2.00 (bien)
para 1.80 también bien.

Necesito que me redondee todos los decimales al alza: por ejemplo para valores entre 1.01 y 2.00 me lo tiene que mandar a 2.00.
  #6 (permalink)  
Antiguo 10/05/2005, 05:44
 
Fecha de Ingreso: marzo-2005
Mensajes: 62
Antigüedad: 19 años, 8 meses
Puntos: 0
he puesto un ejemplo de lo que pretendo en esta web:

Paquetes de pipas

para valores de 2.1 paquetes de pipas, realmente he abierto 3... no 2 como se muestra.

gracias por cualquier ayuda.
  #7 (permalink)  
Antiguo 10/05/2005, 08:03
 
Fecha de Ingreso: marzo-2005
Mensajes: 62
Antigüedad: 19 años, 8 meses
Puntos: 0
¿Nadie sabe cómo hacerlo?
Por favor, que no se pierda este mensaje...
  #8 (permalink)  
Antiguo 10/05/2005, 12:22
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 20 años, 1 mes
Puntos: 3
Hola, inter
Has hecho una mezcla rara de código: estás aplicando Round antes de Ceil, por eso no te funciona.
Prueba así:
Código PHP:
function Redondea0 (amount
{    var 
val parseFloat(amount);
    if (!
val || val <= 0) { return "0.00" 
    else { return 
Math.ceil(val)+ ".00" }

__________________
Angel :cool:
  #9 (permalink)  
Antiguo 11/05/2005, 01:28
 
Fecha de Ingreso: marzo-2005
Mensajes: 62
Antigüedad: 19 años, 8 meses
Puntos: 0
gracias...
gracias...
gracias...
gracias...
gracias...
gracias...
gracias...
  #10 (permalink)  
Antiguo 18/05/2005, 21:53
 
Fecha de Ingreso: diciembre-2004
Mensajes: 5
Antigüedad: 19 años, 10 meses
Puntos: 0
hola.........

tengo una duda epseor me puedan ayudar...

de el ejemplo que esta en http://www.diser.net/pipas.htm

para al cambiar de de campo se hagan las cuentas automaticamente ..... isnt ener que refrescar toda la apgina
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:29.