Foros del Web » Programando para Internet » PHP »

Error de redondeo

Estas en el tema de Error de redondeo en el foro de PHP en Foros del Web. Hola: Tengo un problema con este codigo que uso para mostrar porcentajes parte de mi codigo: Código PHP: <? $img  =  80 ; $orden = ...
  #1 (permalink)  
Antiguo 21/06/2004, 17:19
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 0
Exclamación Error de redondeo

Hola:

Tengo un problema con este codigo que uso para mostrar porcentajes

parte de mi codigo:

Código PHP:
<?
$img 
80;
$orden=0;
while(
$estadistica mysql_fetch_array($query)){
$prueba=$estadistica[nombre];
if(
$prueba !==""){ 
$orden++;
$a=$estadistica[num_referido];
$b=$estadistica[num_impresion];
$total $a $b;
$refer = (int) ($a 100 $total);
$impresion = (int) ($b 100 $total);
// ancho de las imagenes
$ancho1= (int) ($refer 100 $img);
$ancho2 = (int) ($impresion 100 $img);
}
?>
Código HTML:
<img align="absmiddle" width="<?=$ancho1?>" height="6" src="bar2.gif" border="0" alt="referidos <?=$refer?>%"><img align="absmiddle" width="<?=$ancho2?>" height="6" src="blue.gif" border="0" alt="impresiones <?=$impresion?>%"> 
Me muestra los resultados con mis porcentajes, todo ok pero al comienzo de la pàgina me muestra este error

Warning: Division by zero in direccion.com/stats_enlaces.php on line 30

Warning: Division by zero in direccion.com/stats_enlaces.php on line 31


donde las lineas 30 y 31 son:

Código PHP:
$refer = (int) ($a 100 $total);
$impresion = (int) ($b 100 $total); 
y no puedo encontrar el error que supuestamente hay
alguien queme ayude a encontarlo...

saludos
  #2 (permalink)  
Antiguo 21/06/2004, 19:44
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Si lo que quieres ...

Si lo que quieres es mostrar el numero entero de esa division lo puedes hacer así:
Código PHP:
 $precision 1;
 
$refer round(($a 100 $total),$precision);
 
$impresion round(($b 100 $total),$precision); 
eso lo que hace es que te redondea un lugar despues de la coma. Una pregunta que significa (int)( .... ) un type cast?

Salu2
__________________
Ing. Reynier Pérez Mira
  #3 (permalink)  
Antiguo 22/06/2004, 08:14
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola:

intentare probar lo que dices, sobre lo que preguntas

$refer = (int) ($a * 100 / $total);

aqui estas forzando que el resultado de la oprecación se convierta en entero...
de la mis ma forma puedes hacerlo para convertir a real, asi (real)

Saludos
  #4 (permalink)  
Antiguo 22/06/2004, 08:39
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 0
Re:

Bien he probado el codigo de reyner ahora me muestra el porcentaje en forma decimal sin embargo me sigue dando error en la misma lineas y del mismo tipo
a pesar de que muestra el resultado de mis variables usadas

parte del codigo quedo asi:

Código PHP:
<?
$img 
80;
$orden=0;
while(
$estadistica mysql_fetch_array($query)){
$prueba=$estadistica[nombre];
if(
$prueba !==""){ 
$orden++;
$a=$estadistica[num_referido];
$b=$estadistica[num_impresion];
$total $a $b;
$precision 1
$refer round(($a 100 $total),$precision); 
$impresion round(($b 100 $total),$precision); 
// ancho de las imagenes
$ancho1= (int) ($refer 100 $img);
$ancho2 = (int) ($impresion 100 $img);
}
?>
Y los errores:
Warning: Division by zero in direccion.com/stats_enlaces.php on line 30

Warning: Division by zero in direccion.com/stats_enlaces.php on line 31


Y no se como resolver este error

Espero que alguien pueda ayudarme a solucionarlo

Saludos
  #5 (permalink)  
Antiguo 22/06/2004, 09:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

El error te dice que has intentado dividir por 0. ¿Has comprobado el valor de $total no es 0 o NULL en tiempo de ejecucion?

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 22/06/2004, 10:40
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Pues eso

Pues nada eso que dice Josemi. Has visto que $total no tome valores iguales a 0??
Salu2
__________________
Ing. Reynier Pérez Mira
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 10:59.