Si tenemos dos valores tales como a = 0.999999... y b = 1.0, es decir que son representaciones decimales del mismo número real 1, no obstante la expresión x == y será evaluada como false... el siguiente código funciona, pero si uso un bucle para imprimir por pantalla la altura del objeto en función del tiempo t entonces la altura h acaba siendo ligeramente negativa en lugar de devolverme cero...
//
// describir la trayectoria de un objeto que cae desde una
// altura de 100 metros hasta que se detiene en el suelo
//
#include <iostream>
#include <cmath>
constexpr double altura_sub0{ 100.0 };
constexpr double g{ 9.81 };
int main()
{
double t_iter{ 0.0 };
double t{ sqrt(altura_sub0 / (g / 2)) };
double h{ altura_sub0 };
h = altura_sub0 - g*t*t / 2;
if (h == 0.0)
std::cout << "resultado correcto de h = 0 en tiempo "
<< t << " segundos." << std::endl;
else
std::cout << "fallo!, tras " << t << " segundos el objeto"
"se encuentra en h = " << h << std::endl;
}