Me explico: el tema es, a partir de cierto número entero, ir restandole 0.1 en un bucle. Sencillo, no?
Es decir, si tuvieramos el 3, le iríamos restando 0.1, obteniendo 4.9 , 4.8 , 4.7 ... y así sucesivamente hasta llegar al 0.
Aquí pego el código que estoy utilizando (esto lo tengo en las acciones del primer fotograma):
----------------------------------------------------------
//Inicializo speed a 3
speed=3;
//mientras speed sea mayor que 0
while(speed>0)
{
//le resto 0.1
speed-=0.1;
//imprimo el valor de la variable speed en cada iteración del bucle
trace(speed);
}
-------------------------------------------------------------------------
Simple y sencillo, todo parece funcionar bien , veremos en lo alto de la lista del trace el 3, y a partir de ahi 2.9 , 2.8 , 2.7........ 2.3 , 2.2 , 2.1 , 2 , 1.9 , 1.8 , 1.7 ,.........1.2 , 1.1 y ¡oh sorpresa! 0.999999998, donde debería haber un 1. A partir de ahí ya se vuelve loco y acaba por sacar un numero elevado a e-16 !!
Si no me creeis, hacer la prueba
Y, por qué no falla al llegar al 2, y sí al llegar al 1? No es el mismo tipo de resta?
Alguien tiene alguna idea o explicación para esto?
Gracias por adelantado.
Fdo: Un Prometeo Desesperado
