Как проверить, что входное число не является целым числом с плавающей точкой?

Я хочу проверить правильность ввода, но когда я запускаю этот код, я вижу, что он проверяет только ввод для символов. Если я введу число с плавающей точкой, оно возьмет его и будет использовать как целое число без дробной части.

#inclide <iostream>
using namespace std;
...
int n;
cout << "Your input is: "<<endl;
cin >> n;
while (cin.fail()) {
    cout << "Error. Number of elements must be integer. Try again: " << endl;
    cin.clear();
    cin.ignore(256, '\n');  
    cin >> n;
}
...        
      `

Итак, как заставить этот код видеть, является ли ввод плавающим?