Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/03/2012, 06:35
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: Validacion doble

a) Utiliza tipo double en lugar de float.

b) En las comparaciones que estás haciendo en los while (estás comparando con 1), haz la comparación con 1.0. Aparentemente es lo mismo, pero para el compilador puede no serlo. El formato interno es distinto para los tipos en coma flotante que para los tipos enteros.

c) El valor 0.1, al pasar a binario, resulta ser un decimal periódico. Dado que la precisión es limitada (32 bits para float, 64 para double), tendrás una pérdida de información, por lo que, dependiendo de la forma de redondear de la máquina (o del compilador), al pasar 0.1 a binario y luego volver a decimal (con tipo float), te puedes encontrar con 0.099999994 ó con 0.10000000149012. De ahí la primera recomendación: Utiliza double.