c++整型变量输入小数导致错误 怎么判断输入的是小数并报错 后重新输入数字

题目是:输入起始数值a和终止数值b,输出a与b之间的素数。
卡在了 输入起始数值和终止数值时,输错成小数,如何判断、报错、重新输入、继续运行。

        int a,b,x;
        cout << "起始数值:";
        cin >> a;
        while(cin.fail())
        {
            cin.clear();
            cin.ignore(100,'\n');
            cout << "你只能输入一个整数。" << endl;
            cout << "请输入起始数值:";
            cin >> a; 
        }
        while(!(a>=0))
        {
            cin.clear();
            cin.ignore();
            cout << "错误,请输入一个自然数!" << endl;
            cout << "起始数值:";
            cin >> a;
        }
        cout << "终止数值:";
        cin >> b;
        while(cin.fail())
        {
            cin.clear();
            cin.ignore(100,'\n');
            cout << "你只能输入一个整数。" << endl;
            cout << "请输入终止数值:";
            cin >> b; 
        }
        while(!(b>=0) || b<a)
        {
            cin.clear();
            cin.ignore();
            cout << "错误,请输入一个大于a的自然数!" << endl;
            cout << "终止数值:";
            cin >> b;
        }

上面的代码已经判断了输入的是字符字母和小于0的情况,但不适用于输入小数,输入小数会出现下面的样子:

img

求问各位该怎样修改?或者有其他判断、排除小数、字符的方法?感激回答!

可以这样

        int a,b,x;
        float x;
        cout << "起始数值:";
        cin >> x;
        while(cin.fail() || x != (int)x)
        {
            cin.clear();
            cin.ignore(100,'\n');
            cout << "你只能输入一个整数。" << endl;
            cout << "请输入起始数值:";
            cin >> x;
        }
        a = (int)x;