C ++ Cómo evitar el error aritmético de punto flotante

Estoy escribiendo un bucle que se incrementa con un flotador, pero me he encontrado con un problema de aritmética de punto flotante ilustrado en el siguiente ejemplo:

for(float value = -2.0; value <= 2.0; value += 0.2)
    std::cout << value << std::endl;

Aquí está la salida:

-2
-1.8
-1.6
-1.4
-1.2
-1
-0.8
-0.6
-0.4
-0.2
1.46031e-07
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8

¿Por qué exactamente estoy recibiendo1.46031e-07 en lugar de0? Sé que esto tiene algo que ver con los errores de punto flotante, pero no puedo comprender por qué está sucediendo y qué debo hacer para evitar que esto suceda (si hay una manera). ¿Puede alguien explicarme (o señalarme un enlace) que me ayude a entender? Cualquier entrada es apreciada. ¡Gracias!

Respuestas a la pregunta(6)

Su respuesta a la pregunta