Considero que en este caso no se debe a las aproximaciones, sino a que un tipo float no tiene los bytes suficientes para poder almacenar una variable de esa magnitud, por ello, desde la primera operación, el tipo llegó a su límite y le es imposible poder guardar el valor resultante.