Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Ciclo con decimales

Estas en el tema de Ciclo con decimales en el foro de PHP en Foros del Web. Hola que tal como el título dice, necesito saber si se puede de alguna forma hacer un ciclo utilizando decimales. hasta el momento esto es ...
  #1 (permalink)  
Antiguo 18/07/2013, 01:56
 
Fecha de Ingreso: diciembre-2011
Ubicación: México
Mensajes: 26
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Ciclo con decimales

Hola que tal como el título dice, necesito saber si se puede de alguna forma hacer un ciclo utilizando decimales.

hasta el momento esto es lo que tengo pero solamente lo realiza hasta completar un entero y se para.

Código PHP:
for($cl=175$cl<=200$cl=$cl+0.01)
  {
     if(
$total==$cl
        { 
           
$conteol[$cl]=$conteol[$cl]+1;
           
$totals2[$cl]=$totals2[$cl]+$total;
        }
  } 
Agradeceria cualquier ayuda que pudieran proporcionarme, cuento un poco mi problema, tengo antes de ese codigo una operacion que en ocaciones me da fracciones, con los enteros no hay problema porque lo recorro con el ciclo for y obtengo el resultado, pero para fracciones no me hace los calculos y para ello necesito un ciclo pues sino tendria que hacer fisicamente
  #2 (permalink)  
Antiguo 18/07/2013, 02:37
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ciclo con decimales

200-175=25

0.01*100=1

25*100=2500

175*100=17500
200*100=20000

For ($ck=17500;$cl<=20000;$cl++)

sobran la palabras....

El for con $cl=$cl+0.01 tambien debería funcionar.... lo que no puede funcionar és un indice para una matriz que no sea entero

if($total==$cl)
{
$conteol[$cl]=$conteol[$cl]+1;
$totals2[$cl]=$totals2[$cl]+$total;
}

esto solo dara resultado si $total es entero.

Es decir no existe el nodo 175,01 de ninguna matriz $conteol[175,01]

Siempre puede usar $cl100=$cl/100 pero recuerda lo del indice de la matriz
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 18/07/2013, 02:48
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Ciclo con decimales

[QUOTE=canoj;4472344]Hola que tal como el título dice, necesito saber si se puede de alguna forma hacer un ciclo utilizando decimales.

hasta el momento esto es lo que tengo pero solamente lo realiza hasta completar un entero y se para.

Código PHP:
for($cl=175$cl<=200$cl=$cl+0.01)
  {
     if(
$total==$cl
        { 
           
$conteol[$cl]=$conteol[$cl]+1;
           
$totals2[$cl]=$totals2[$cl]+$total;
        }
  } 

Los indices del los arreglos, deben ser números enteros.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 18/07/2013, 10:37
 
Fecha de Ingreso: diciembre-2011
Ubicación: México
Mensajes: 26
Antigüedad: 12 años, 4 meses
Puntos: 0
De acuerdo Respuesta: Ciclo con decimales

Muchas gracias a hhs y quimfv, con sus respuestas me abrieron los ojos, la verdad es que no me di cuenta de que es verdad que en arreglos los indices solo aceptan enteros y es que pasa que cuando llevas mucho tiempo en algo a veces se nos pasan cosas como estas. ya quedo solucionado y lo pongo a continuación.


Código PHP:
$totall=$total*100;
for(
$cl=17500$cl<=20000$cl++)
  {
     if(
$totall==$cl)
       {
         
$conteol[$cl]=$conteol[$cl]+1;
         
$totals2[$cl]=$totals2[$cl]+$total;
       }
   } 
Excelente su aportación me salvaron horas y horas de trabajo :P, gracias nuevamente a los dos.
  #5 (permalink)  
Antiguo 18/07/2013, 11:44
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Ciclo con decimales

Claro que puedes hacer lo que pedias....... esa es la belleza del lenguaje..... mira que facil era la cosa:

Código PHP:
Ver original
  1. <?php
  2.  
  3.    $x = 0.25; // tu indice: un numero
  4.    $conteol[(string)$x] = 2.5;  
  5.  
  6.    // Quiero acceder al '0.25' y tengo un numero ? no problem!
  7.  
  8.    $x = 0.25; // un numero
  9.    echo $conteol[(string)$x];

A eso se llama "Casting" o sea... conviertes la variable (en tu caso la del indice del arreglo) al tipo que necesitas... no era necesario hacer tanta cosa:

Código PHP:
Ver original
  1. $totall=$total*100;
  2. for($cl=175; $cl<=200; $cl+=0.01)
  3.   {
  4.      if($totall==$cl)
  5.        {
  6.          $conteol[(string)$cl]++;
  7.          $totals2[(string)$cl]+= $total;
  8.        }
  9.    }

Otra forma: en vez de hacer $array[(string)$indice] puedes hacer $array["$indice"] y... adicional ... mira que puedes escrbir mucho menos si usas los operadores ++ y += o -= si lo necesitas ;)

Código PHP:
Ver original
  1. $totall=$total*100;
  2. for($cl=175; $cl<=200; $cl+=0.01)
  3. {
  4.     if($totall==$cl)
  5.     {
  6.         $conteol["$cl"]++;
  7.         $totals2["$cl"]+= $total;
  8.     }
  9. }

Si ves... tanto lio y se solucionaba con un par de comillas dobles
__________________
Salu2!

Última edición por Italico76; 18/07/2013 a las 15:43
  #6 (permalink)  
Antiguo 17/08/2013, 21:18
 
Fecha de Ingreso: diciembre-2011
Ubicación: México
Mensajes: 26
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Ciclo con decimales

Perdón por la tardanza de la respuesta pero me parecio interesante y sobre todo práctico, gracias por el aporte.

Etiquetas: Ninguno
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 21:28.