Как найти остаток от деления переменной, если она типа double?

double amount;
cin >> amount;
if (amount % 1 == 0)
{...}

Вот такой код не работает, поскольку amount в программе имеет тип double, сама ошибка:

E2140 выражение должно относиться к целочисленному типу или типу перечисления без области видимости

По условия задачи, нужно выполнить проверку того, что пользователь ввел число без дробной части в данном конкретном случае и если это так, то уже выполнять код в скобках, а если число дробное, то выполнить уже другое действие.


Ответы (3 шт):

Автор решения: StackITS64

Опреатор остатка от деления не может быть использован на не целочисленных типах попробуй такой вариант:

if (amount  == (int)amount )

Это преобразование типов и можно будет сравнить является ли amount своему же аналогу только целочисленному.

→ Ссылка
Автор решения: Qwertiy

Остаток от деления для вещественных чисел считается функцией fmod.

→ Ссылка
Автор решения: Qwertiy

Проверить, что вещественное число целое, можно так:

fabs(x) >= 9007199254740992 || (long long)x == x
→ Ссылка