Como hacer Validacion de numeros c++

Espero me puedan ayudar me dejaron un programa de datos estadísticos de n números en c++ pero al momento que el programa le pide al usuario ingresar la cantidad de datos a calcular si el usuario ingresa un numero negativo le manda un mensaje de error pero si el usuario mete 5.8 solo agarra el 5 y lo que esta después del punto no pero no quiero eso si no que mande un mensaje de error y que pida otra ves el numero este es mi código con el que valido y también como puedo hacer que solo acepte 4 numero después del punto este es con lo que valido pero no consigo lo que comente arriba espero me puedan ayudar

cout << "Ingrese la Cantidad de Numeros a obtener: ";
    while (!(std::cin >> p).good() || p > 30 || p < 2)
    {
        std::cin.clear();
        std::cin.ignore(10000, '\n');
        std::cout << "El Numero NO entra en el parametro debe ser mayor a 2 y menor a 30" << std::endl;
        std::cout << "***" << std::endl;
        std::cout << "---" << std::endl;
        std::cout << "***" << std::endl;
        std::cout << "Ingrese la Cantidad de Numeros a obtener: ";
    }
    std::cin.clear();
    std::cin.ignore(10000, '\n');

Añade tu respuesta

Haz clic para o