Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/04/2015, 16:54
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Programa de c++, no ejecuta ultima resultado

Trabajar con decimales no es lo mismo que trabajar con enteros. Si has estudiado cómo se almacenan los números decimales, habrás notado que no suelen ser cálculos exactos. En consecuencia, una comparación x==2.0 no parece una buena idea. Básicamente porque x puede valer 2.000000001, que ya será superior al 2.0 que tu has puesto como condición.

La solución pasa por trabajar con aproximaciones. Por ejemplo: x < 2.01. Dado que estás incrementando por décimas, comparar por centésimas te debería dar la precisión necesaria.

Otra forma podría ser:

Código C:
Ver original
  1. for( x=1.0; fabs( x - 2.1 ) < 0.01; x+=0.1 )

fabs calcula el valor absoluto. Si x difiere de 2.1 menos de una centésima, puedes asumir sin lugar a dudas que en la iteración anterior x era aproximadamente, 2.0

También puedes pasar de los decimales y, sabiendo que vas a hacer N iteraciones, usar un contador entero:

Código C:
Ver original
  1. float x = 1.0;
  2. for( int n=0; n < 12; ++n, x += 0.1 )

Si no te ha quedado claro el planteamiento, pregunta tus dudas.

Un saludo.