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

template <typename T>
unsigned get_max_precision()
{
    return std::numeric_limits<T>::max_digits10 + 1;
}

int main()
{
    float   a = 0.7;
    double  b = 0.7;

    std::cout << std::setprecision(get_max_precision<double>());
    std::cout << "a is " << a << "\nb is " << b << '\n';
}