double amount;
cin >> amount;
if (amount % 1 == 0)
{...}
Вот такой код не работает, поскольку amount в программе имеет тип double, сама ошибка:
E2140 выражение должно относиться к целочисленному типу или типу
перечисления без области видимости
По условия задачи, нужно выполнить проверку того, что пользователь ввел число без дробной части в данном конкретном случае и если это так, то уже выполнять код в скобках, а если число дробное, то выполнить уже другое действие.
задан 9 июл 2022 в 16:08
4
Остаток от деления для вещественных чисел считается функцией fmod
.
ответ дан 9 июл 2022 в 20:42
Qwertiy♦Qwertiy
121k24 золотых знака121 серебряный знак291 бронзовый знак
3
Проверить, что вещественное число целое, можно так:
fabs(x) >= 9007199254740992 || (long long)x == x
ответ дан 9 июл 2022 в 21:40
Qwertiy♦Qwertiy
121k24 золотых знака121 серебряный знак291 бронзовый знак
Опреатор остатка от деления не может быть использован на не целочисленных типах попробуй такой вариант:
if (amount == (int)amount )
Это преобразование типов и можно будет сравнить является ли amount своему же аналогу только целочисленному.
ответ дан 9 июл 2022 в 20:13
3
Форум программистов Vingrad
Модераторы: Daevaorn
Страницы: (2) Все [1] 2 |
Поиск: |
|
остаток от деления вещественных чисел |
Опции темы |
PRF |
|
||
Шустрый Профиль Репутация: нет
|
Привет. Ребята как получить остаток от деления. double A = 1.23202; A % 1 = выдает ошибку, но это понятно, так вот, как получить остаток от деления вещественного числа??? |
||
|
|||
volvo877 |
|
||
Эксперт Профиль Репутация: 1
|
Попробуй функцию fmod из math… |
||
|
|||
sergejzr |
|
||
Un salsero Профиль
Репутация: 19
|
Остатка от деления вещественного числа в природе быть не может. ——————— Me. |
||
|
|||
NebelDT |
|
||
Шустрый Профиль
Репутация: -1
|
Как тебе такой примечик???
|
||
|
|||
mrbrooks |
|
||
трололомен Профиль
Репутация: 2
|
NebelDT, это че за дичь? |
||
|
|||
Alexeis |
|
||
Амеба Профиль
Репутация: 12
|
NebelDT, а теперь подумай . ——————— Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||
|
|||
vinter |
|
||
Explorer Профиль
Репутация: 13
|
кастанув спелл телепатии, я решил, что тебе нужно следущее
——————— Мой блог |
||
|
|||
inside_pointer |
|
||
Опытный Профиль Репутация: 5
|
подключение математической библиотеки |
||
|
|||
volvo877 |
|
||
Эксперт Профиль Репутация: 1
|
inside_pointer, во втором посте что было, не заметил? Однако, здесь появилось мнение, что разработчики С/С++ и библиотек — полные идиоты, и занимаются не тем, чем нужно, ибо остатка быть не может… Значит, твой пост — фикция… Не может быть такой функции в природе, ибо считать ей НЕЧЕГО… |
||
|
|||
vinter |
|
||
Explorer Профиль
Репутация: 13
|
конечно нечего, любое вещественое число, делиться на любое другое без остатка. Значит у вещественных чисел нет остатка ——————— Мой блог |
||
|
|||
system |
|
||
Новичок Профиль Репутация: нет
|
Это сообщение отредактировал(а) system — 30.9.2008, 16:56 |
||
|
|||
korian |
|
||
Опытный Профиль
Репутация: 3
|
шото поискав по инету нашел тока такое определение:
видно т.к. операция mod над действительными числами не имеет большой популярности, другое определение фиг найдешь |
||
|
|||
Alexeis |
|
||
Амеба Профиль
Репутация: 12
|
В данном случае речь о случае когда целое число представлено числом с плавающей точкой, либо можно отбросить цифры после запятой. Функция fmod существует для оптимизации таких вычислений, т.е. для того чтобы не производить лишних операций. ——————— Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||
|
|||
korian |
|
||
Опытный Профиль
Репутация: 3
|
Alexeis, вы имеете ввиду, что функция fmod делает что-то типа: |
||
|
|||
J0ker |
|
||
Опытный Профиль Репутация: 4
|
——————— |
||
|
|||
Страницы: (2) Все [1] 2 |
|
Правила форума «С++:Общие вопросы» | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
Tankist 90 0 / 0 / 2 Регистрация: 27.04.2015 Сообщений: 348 |
||||
1 |
||||
Как найти остаток от деления чисел с плавающей точкой?03.11.2016, 11:17. Показов 33244. Ответов 5 Метки нет (Все метки)
Приветствую. Есть код:
Пишет что операция «%» невозможна, так как тип данных вещественный… (mas[i])
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
03.11.2016, 11:17 |
Ответы с готовыми решениями: Найти сумму чисел в диапазоне [a;b], у которых остаток от деления на 7 такой же, как и у b при делении на 7 Числа с плавающей точкой после деления Найти сумму таких чисел в диапазоне [a;b], у которых остаток от деления на 7 такой же, как и у b при делении на 7. Для двух целых чисел найти остаток и частное от целочисленного деления, частное от вещественного деления 5 |
Форумчанин 8194 / 5044 / 1437 Регистрация: 29.11.2010 Сообщений: 13,453 |
|
03.11.2016, 11:23 |
2 |
Пишет что операция «%» невозможна, так как тип данных вещественный… (mas[i]) Всё верно. Деление по модулю через % для вещественных чисел невозможно. Сохраняйте дробную часть, преобразовывайте в целое, делите, добавляйте дробную часть.
1 |
79 / 67 / 28 Регистрация: 22.04.2016 Сообщений: 384 |
|
03.11.2016, 11:23 |
3 |
Сообщение было отмечено Tankist 90 как решение РешениеTankist 90, Потому что операция «%» предназначена только для чисел типа int.
2 |
3222 / 1749 / 435 Регистрация: 03.05.2010 Сообщений: 3,867 |
|
03.11.2016, 11:36 |
4 |
Для того, чтобы найти остаток от деления для чисел с плавающей точкой используйте функцию fmod. В новом стандарте еще функция с более мнемоничным названием std::remainder есть, только она возвращает отрицательный остаток, если положительный больше половины делителя.
1 |
79 / 67 / 28 Регистрация: 22.04.2016 Сообщений: 384 |
|
03.11.2016, 11:43 |
5 |
Mr.X, мне кажется, что в данном случае больше подойдет функция fmod. Т.к. не нужно будет проверять какой остаток получился: отрицательный или нет; или применять к остатку функцию abs();
0 |
3222 / 1749 / 435 Регистрация: 03.05.2010 Сообщений: 3,867 |
|
03.11.2016, 11:51 |
6 |
мне кажется, что в данном случае больше подойдет функция fmod. Т.к. не нужно будет проверять какой остаток получился: отрицательный или нет Ну, автору это не грозит, так как он остаток на ноль проверяет.
2 |
Прототип функции fmod:
double fmod( double num, double denom ); float fmod( float num, float denom ); long double fmod( long double num, long double denom );
Заголовочный файл
Название | Язык |
---|---|
math.h | С |
cmath | С++ |
Описание
Функция fmod
вычисляет остаток от деления и возвращает значение с плавающей точкой, оставшуюся часть от целочисленного деления параметров num/denom
.
Остаток от деления является результатом вычитания из числителя, произведение целого частного num / denom
на знаменатель:
остаток = числитель — (целое частное) * знаменателю
В Си, определён только один прототип данной функции, с типом данных double
.
Параметры:
- num
Вещественное значение — числитель. - denom
Вещественное значение — знаменатель.
Возвращаемое значение
Остаток от деления числителя на знаменатель.
Пример: исходный код программы
// пример использования функции fmod #include <iostream> // для оператора cout #include <cmath> // для функции fmod int main() { std::cout << "fmod(7.3, 2.9) = " << fmod(7.3, 2.9) << std::endl; std::cout << "fmod(15.5, 2.2) = " << fmod(15.5, 2.2) << std::endl; return 0; }
Пример работы программы
CppStudio.com
fmod(7.3, 2.9) = 1.5
fmod(15.5, 2.2) = 0.1