Foros del Web » Programando para Internet » PHP »

Formateo de decimales con ajuste

Estas en el tema de Formateo de decimales con ajuste en el foro de PHP en Foros del Web. Hola!, necesito realizar un formateo de números decimales (concretamente sería un importe de euros, pero da igual la moneda), pero con un ajuste siempre hacia ...
  #1 (permalink)  
Antiguo 22/03/2011, 04:18
Avatar de sfx4ever  
Fecha de Ingreso: noviembre-2003
Ubicación: aqui
Mensajes: 384
Antigüedad: 21 años
Puntos: 2
Formateo de decimales con ajuste

Hola!, necesito realizar un formateo de números decimales (concretamente sería un importe de euros, pero da igual la moneda), pero con un ajuste siempre hacia arriba, lo explico mejor con estos ejemplos:


1. Si el importe es entre 5 y 20 euros, el ajuste es de 0.2. Ejemplos:
-importe: 6.378, resultado: 6.4
-importe: 13.1, resultado: 13.2
-importe: 5.912, resultado: 6

2. si el importe es entre 21 y 100 euros, el ajuste es de 0.5. Ejemplos:
-importe: 25.4, resultado: 25.5
-importe: 56.51 , resultado: 57

3. si el importe es mayor de 100 euros, el ajuste es de 1 euro. Ejemplos:
-importe: 250.5, resultado: 251
-importe: 153, resultado: 153

etc.

No tengo muy claro como hacerlo, ni si existe alguna función que lo haga (he revisado la página de funciones de php y no he encontrado nada).

Por ahora yo he empezado con esto, pero no se como seguir:

Código PHP:
$desdepvp[0]=0;
    
$desdepvp[1]=0.1;
    
$desdepvp[2]=1;
    
$desdepvp[3]=5;
    
$desdepvp[4]=20;
    
$desdepvp[5]=100;

    
$ajuste[0]=0.0010;
    
$ajuste[1]=0.05;
    
$ajuste[2]=0.1;
    
$ajuste[3]=0.2;
    
$ajuste[4]=0.5;
    
$ajuste[5]=1
¿alguna ayuda?
GRACIAS!
  #2 (permalink)  
Antiguo 22/03/2011, 05:15
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Formateo de decimales con ajuste

Para ajustar con 0.2 y 0.5 utiliza round: http://php.net/manual/es/function.round.php
Para ajustar a 1 utiliza ceil: http://www.php.net/manual/es/function.ceil.php
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #3 (permalink)  
Antiguo 23/03/2011, 03:14
Avatar de sfx4ever  
Fecha de Ingreso: noviembre-2003
Ubicación: aqui
Mensajes: 384
Antigüedad: 21 años
Puntos: 2
Respuesta: Formateo de decimales con ajuste

Gracias Vallu por tu respuesta, como había dicho, ya me había revisado las páginas de funciones de php, pero siguiendo tu consejo, revisando de nuevo round(), en los comentarios me he encontrado con una sorpresa, la funcion roundUpTo, que hace exactamente lo que quiero.

La pongo aqui (y el script para adecuarse a lo que yo necesito) por si alguien más la necesita:

Código PHP:
    $desdepvp[0]=0;
    
$desdepvp[1]=0.1;
    
$desdepvp[2]=1;
    
$desdepvp[3]=5;
    
$desdepvp[4]=20;
    
$desdepvp[5]=100;

    
$ajuste[0]=0.0010;
    
$ajuste[1]=0.05;
    
$ajuste[2]=0.1;
    
$ajuste[3]=0.2;
    
$ajuste[4]=0.5;
    
$ajuste[5]=1;
    
    
    
$num 125.21//numero a redondear
    
    
for ($i=0;$i<count($desdepvp);$i++){
        if (
$num>$desdepvp[$i] && $num<=$desdepvp[$i+1]){
            echo 
"<br>$num <i>(entre ".$desdepvp[$i]." y "$desdepvp[$i+1] .", ajuste:".$ajuste[$i]." )</i> = " roundUpTo($num,$ajuste[$i]);
        }
    }
    if (
$num>$desdepvp[5]){
        echo 
"<br>$num <i>(mayor que ".$desdepvp[5].", ajuste: ".$ajuste[5].")</i> = ".roundUpTo($num,$ajuste[5]);
    }
    
    function 
roundUpTo($number$increments) {
    
$increments $increments;
    return (
ceil($number $increments) / $increments);
    } 
Para probar el script simplemente ir dandole distintos valores a la variable $num.

SALUDOS!

Etiquetas: formateo
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 01:50.