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:
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 originalfloat x = 1.0;
for( int n=0; n < 12; ++n, x += 0.1 )
Si no te ha quedado claro el planteamiento, pregunta tus dudas.
Un saludo.