#include <cmath>
#include <iomanip>
#include <iostream>
#include <limits>

long double my_round(long double value, unsigned decimal_places)
{
    long double mult = std::pow(10.0L, decimal_places);
    return std::round(value * mult) / mult;
}

int main()
{
    long double Fred = 9.56756785685685682595L;
    auto max_prec = std::numeric_limits<long double>::digits10;

    for (unsigned i = 0; i < max_prec; ++i)
    {
 		std::cout << "decimal places: " << i << '\n';
 		std::cout << std::setprecision(max_prec) << Fred << '\n';
        std::cout << std::setprecision(i+2) << my_round(Fred, i) << "\n\n";
    }
}