Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/09/2012, 09:31
yosoloyo
 
Fecha de Ingreso: mayo-2008
Mensajes: 156
Antigüedad: 16 años, 5 meses
Puntos: 0
Error raro con float y bucle while

Buenas pues tengo un problema algo raro con un bucle while y un float o en este caso mas que un float es un double que dependiendo del valor que tome lo hace bien o no. Me explico

Tengo un presupuesto que siempre de mínimo tiene que haber 0.5, por lo que en el ejemplo tomaré que presupuesto vale 0.6 y que por tanto puedo usar hasta un máximo de 0.1

Pues bien:
Código PHP:
Ver original
  1. $presupuestototal=0.6; //Variable que nos dirá el presupuesto total


Averiguamos el total que se podría usar
Código PHP:
Ver original
  1. $cantidad_maxima = $presupuestototal-0.5;

Creamos una variable que nos sirva para luego en el bucle ir sumando y la convertimos en double
Código PHP:
Ver original
  1. $cantidadsumatoria=0;
  2. settype($cantidadsumatoria,"double");

Ahora recorremos el bucle
Código PHP:
Ver original
  1. while ($cantidadsumatoria<=$cantidad_maxima)
  2. {
  3.    echo $cantidadsumatoria;
  4.    $cantidadsumatoria+=0.1;
  5. }//fin while

Pues bien este bucle tan sencillo, que supuestamente debe imprimir la variable cantidadsumatoria tantas veces como sea menor igual a la cantidad máxima, lo imprime siempre que la cantidad máxima sea mayor que 0.2, es decir de 0.3 en adelante, si es menor solo imprime el primer valor que es cero.
Sin embargo como digo si se cambia el presupuesto y se pone una cantidad mayor, no hay problema y lo imprime siempre.

¿Que hago mal? Se que tiene que ser algo muy tonto pero no me doy cuenta la verdad
Incluso como veis he pasado el valor entero a double por si acaso, pero es que no influye para nada tampoco.

Dejo el código completo por para que no se tenga que estar copiando por partes si alguien lo quiere probar
Código PHP:
Ver original
  1. $presupuestototal=0.6;
  2. $cantidad_maxima = $presupuestototal-0.5;
  3. $cantidadsumatoria=0;
  4. settype($cantidadsumatoria,"double");
  5. while ($cantidadsumatoria<=$cantidad_maxima)
  6. {
  7.    echo $cantidadsumatoria . "<br>";
  8.    $cantidadsumatoria+=0.1;
  9. }//fin while

Gracias de antemano