Ответ 1
Оператор %
предназначен для целых чисел. Вы ищете функцию fmod()
.
#include <math.h>
int main() {
double x = 6.3;
double y = 2.0;
double z = fmod(x,y);
return 0;
}
У меня есть программа на С++ (скомпилирована с использованием g++). Я пытаюсь применить два удвоения в качестве операндов к функции модуля, но я получаю следующую ошибку:
ошибка: недопустимые операнды типов "double" и "double" to binary "operator%"
Здесь код:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
Оператор %
предназначен для целых чисел. Вы ищете функцию fmod()
.
#include <math.h>
int main() {
double x = 6.3;
double y = 2.0;
double z = fmod(x,y);
return 0;
}
fmod(x, y)
- это функция, которую вы используете.
Используйте fmod()
из <cmatch>
. Если вы не хотите включать файл заголовка C:
double dmod (double x, long long mod)
{
return static_cast<long long>(x) % mod + x - static_cast<long long>(x);
}
Или более общий подход (T
не может быть float
или double
):
template<typename T, typename U>
constexpr T dmod (T x, U mod)
{
return static_cast<long long>(x) % mod + x - static_cast<long long>(x);
}