Foros del Web » Programando para Internet » PHP »

Redondear numero .5 baje mayor a .5 suba

Estas en el tema de Redondear numero .5 baje mayor a .5 suba en el foro de PHP en Foros del Web. Hola estoy tratando de redondear un número el cual obtengo de un promedio... pero necesito que si el resultado es por ejemplo 9.5 baje a ...
  #1 (permalink)  
Antiguo 13/09/2012, 18:41
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Redondear numero .5 baje mayor a .5 suba

Hola estoy tratando de redondear un número el cual obtengo de un promedio...
pero necesito que si el resultado es por ejemplo 9.5
baje a 9

si es 9.6
suba a 10

intente con
Código PHP:
<?php echo round($promedio,0); ?>

pero si mi resultado es 9.5 lo sube a 10 (cuando para mi debe quedar en 9)

Alguna idea, de antemano GRACIAS
  #2 (permalink)  
Antiguo 13/09/2012, 18:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Redondear numero .5 baje mayor a .5 suba

Podrías hacer la comparación a mano.

Separas el decimal con explode(), comparas el valor y procedes.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/09/2012, 18:49
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Redondear numero .5 baje mayor a .5 suba

Cita:
Iniciado por pateketrueke Ver Mensaje
Podrías hacer la comparación a mano.

Separas el decimal con explode(), comparas el valor y procedes.
Gracias por tu respuesta no sé mucho de explode y su funcionamiento
buscaré algo a ver si logro resolverlo
  #4 (permalink)  
Antiguo 13/09/2012, 18:52
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Redondear numero .5 baje mayor a .5 suba

Código PHP:
Ver original
  1. $numero = 10.7;
  2.  
  3. $a=explode(".",$numero); //separo por . ( punto )
  4.  
  5. if(count($a)>1){ //si $a tiene mas de 1 elemento, es porque es decimal, entonces muestro la primera posición que será el que me interesa.
  6.     echo $a[0];
  7.    
  8. }else{
  9.     echo $a[0];//si $a no tiene mas de un elemento también muestro la primera y única posición
  10. }
  11.  
  12. salida en pantalla "10".

algo así capas
  #5 (permalink)  
Antiguo 13/09/2012, 19:10
Avatar de Netfrank  
Fecha de Ingreso: marzo-2006
Ubicación: Las Talitas - Tucumán
Mensajes: 226
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Redondear numero .5 baje mayor a .5 suba

Creo que con el explode andarías bien!

Yo propongo algo así:
Código PHP:
// Separas los enteros de los decimales.
$sep explode(".",$numero);
if(
count($sep)>1){
    
// Si existe un decimal lo tomamos
    
if($sep[1]>5){
        
// Si el decimal es mayor que 5 pasamos al siguiente entero
        
$numero_final $sep[0] + 1;
    } else {
        
// Si es menor que 5
        
$numero_final $sep[0];
    }

__________________
-- Franco D. Ocaranza
-- [email protected]
-- http://www.jmqv.com.ar/
  #6 (permalink)  
Antiguo 13/09/2012, 19:21
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 137
Respuesta: Redondear numero .5 baje mayor a .5 suba

Ya existe en PHP eso
Código PHP:
Ver original
  1. <?php
  2. echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9
  3. echo round(9.6, 0, PHP_ROUND_HALF_DOWN); // 10
  4. ?>
revisa la documentación oficial de php
http://www.php.net/manual/es/function.round.php
  #7 (permalink)  
Antiguo 14/09/2012, 09:14
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Redondear numero .5 baje mayor a .5 suba

Cita:
Iniciado por abimex Ver Mensaje
Ya existe en PHP eso
Código PHP:
Ver original
  1. <?php
  2. echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9
  3. echo round(9.6, 0, PHP_ROUND_HALF_DOWN); // 10
  4. ?>
revisa la documentación oficial de php
http://www.php.net/manual/es/function.round.php
Gracias por tu respuesta


lo intente asi

echo round$promedio, 0, PHP_ROUND_HALF_DOWN);
echo round($promedio, 0, PHP_ROUND_HALF_DOWN);


pero me marco lo siguiente
Warning: Wrong parameter count for round() in
  #8 (permalink)  
Antiguo 14/09/2012, 09:15
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Redondear numero .5 baje mayor a .5 suba

Cita:
Iniciado por Netfrank Ver Mensaje
Creo que con el explode andarías bien!

Yo propongo algo así:
Código PHP:
// Separas los enteros de los decimales.
$sep explode(".",$numero);
if(
count($sep)>1){
    
// Si existe un decimal lo tomamos
    
if($sep[1]>5){
        
// Si el decimal es mayor que 5 pasamos al siguiente entero
        
$numero_final $sep[0] + 1;
    } else {
        
// Si es menor que 5
        
$numero_final $sep[0];
    }

Gracias por tu ayuda lo hice asi
Código PHP:
<?php 
$tp2
=($pfinal+$pfinal2+$pfinal3+$pfinal4)/10;




$sep explode(".",$tp2); 
if(
count($sep)>1){ 
    
// Si existe un decimal lo tomamos 
    
if($sep[1]>5){ 
        
// Si el decimal es mayor que 5 pasamos al siguiente entero 
        
$tp2_final $sep[0] + 1
    } else { 
        
// Si es menor que 5 
        
$tp2_final $sep[0]; 
    } 
}  
?>


En teoría funciona solo que si tengo 9.0 de resultado lo sube a 10

supongo que debo agregar otra condición
  #9 (permalink)  
Antiguo 14/09/2012, 09:18
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Redondear numero .5 baje mayor a .5 suba

Ya verifique y sube al no tener decimal por ejemplo 9 lo sube a 10
  #10 (permalink)  
Antiguo 14/09/2012, 09:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Redondear numero .5 baje mayor a .5 suba

La tercera opción funciona desde PHP5.3 ¿que versión de PHP tienes?
  #11 (permalink)  
Antiguo 14/09/2012, 09:21
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Redondear numero .5 baje mayor a .5 suba

agregue echo number_format para tener un decimal pero aun asi si tengo 9.0 lo sube a 10
  #12 (permalink)  
Antiguo 14/09/2012, 09:32
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años
Puntos: 58
Respuesta: Redondear numero .5 baje mayor a .5 suba

9.0?
Según
Código PHP:
Ver original
  1. $tp2=($pfinal+$pfinal2+$pfinal3+$pfinal4)/10;
Nuca puede dar resultado de 9.0, ya que directamente es 9.
Aunque me gusta más la opción de abimex... que sería la correcta, yo creo que así no debería fallarte.

Código PHP:
Ver original
  1. $tp2=($pfinal+$pfinal2+$pfinal3+$pfinal4)/10;
  2. $sep = explode(".",$tp2);
  3. if(count($sep)>1){
  4.     // Si existe un decimal lo tomamos
  5.     if($sep[1]>5){
  6.         // Si el decimal es mayor que 5 pasamos al siguiente entero
  7.         $tp2 = $sep[0] + 1;
  8.     } else {
  9.         // Si es menor que 5
  10.         $tp2 = $sep[0];
  11.     }
  12. }  
  13. echo $tp2;

Prueba aqui http://ignite.io/code/50534d7def167b9d29000000 Para verlo funcionando tienes que darle a 'Ignite'.

Última edición por jossss; 14/09/2012 a las 09:37 Razón: Realizado el codigo en ignite
  #13 (permalink)  
Antiguo 14/09/2012, 09:55
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Redondear numero .5 baje mayor a .5 suba

Cita:
Iniciado por jossss Ver Mensaje
9.0?
Según
Código PHP:
Ver original
  1. $tp2=($pfinal+$pfinal2+$pfinal3+$pfinal4)/10;
Nuca puede dar resultado de 9.0, ya que directamente es 9.
Aunque me gusta más la opción de abimex... que sería la correcta, yo creo que así no debería fallarte.

Código PHP:
Ver original
  1. $tp2=($pfinal+$pfinal2+$pfinal3+$pfinal4)/10;
  2. $sep = explode(".",$tp2);
  3. if(count($sep)>1){
  4.     // Si existe un decimal lo tomamos
  5.     if($sep[1]>5){
  6.         // Si el decimal es mayor que 5 pasamos al siguiente entero
  7.         $tp2 = $sep[0] + 1;
  8.     } else {
  9.         // Si es menor que 5
  10.         $tp2 = $sep[0];
  11.     }
  12. }  
  13. echo $tp2;

Prueba aqui http://ignite.io/code/50534d7def167b9d29000000 Para verlo funcionando tienes que darle a 'Ignite'.
Gracias funciona bien
  #14 (permalink)  
Antiguo 17/09/2012, 12:10
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Redondear numero .5 baje mayor a .5 suba

Crei que funcionaba pero al tener este resultado 8.2
lo sube a 9 cuando deberia bajar a 8
alguna otra sugerencia?????
  #15 (permalink)  
Antiguo 17/09/2012, 12:12
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Redondear numero .5 baje mayor a .5 suba

Crei que funcionaba pero al tener este resultado 8.25
lo sube a 9 cuando deberia bajar a 8
alguna otra sugerencia?????
  #16 (permalink)  
Antiguo 17/09/2012, 12:14
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Redondear numero .5 baje mayor a .5 suba

Creo que el error era porque toma 2 decimales 8.25
agregue
number_format($tp2,1);

y ahora solo queda 8.2 y lo baja a 8

Etiquetas: mayor, numero, redondear
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 19:18.