double amount;
cin >> amount;
if (amount % 1 == 0)
{...}
Вот такой код не работает, поскольку amount в программе имеет тип double, сама ошибка:
E2140 выражение должно относиться к целочисленному типу или типу перечисления без области видимости
По условия задачи, нужно выполнить проверку того, что пользователь ввел число без дробной части в данном конкретном случае и если это так, то уже выполнять код в скобках, а если число дробное, то выполнить уже другое действие.
fmod()– Harry Jul 09 '22 at 16:10if (amount == floor(amount) { да, введено целое число ...}– avp Jul 09 '22 at 16:24{volatile double tmp = static_cast<double>(amount); amount = static_cast<double>(tmp);}или тщательно изучить особенности вычислений чисел с плавающей точкой в конкретном компиляторе. В противном случае, приведённые способы могут давать ошибочные результаты. – wololo Jul 11 '22 at 19:04floor, пример с кастом кlong long. – wololo Jul 11 '22 at 19:04