У меня есть программа на C ++ (скомпилирована с использованием g ++). Я пытаюсь применить два двойных в качестве операндов к функции модуля, но я получаю следующую ошибку:
ошибка: недопустимые операнды типов 'double' и 'double' для двоичного оператора '%'
Вот код:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
fmod
могут вызывать неожиданное поведение. Например,fmod(1, 0.1);
математически должно быть ноль, но на самом деле будет почти 0,1. Степень ошибки возрастает с величиной фактора. Например,fmod(9E14, 0.1);
оценивается примерно до 0,05, что с математической точки зрения просто неправильно.fmod(x,0.1)
будет делить x на эту точную дробь и брать остаток, а не делить на числовое значение «одна десятая».Ответы:
%
Оператор для целых чисел. Вы ищетеfmod()
функцию .источник
angle
, скажем,359.9999999
то и тоangle
и другоеfmod(angle, 360)
, скорее всего, будет отображаться как360
. (При необходимости добавьте еще 9 с.) Попробуйте напечатать значения, скажем, с точностью до 50 цифр.fmod(x, y)
это функция, которую вы используете.источник
Используйте
fmod()
от<cmath>
. Если вы не хотите включать заголовочный файл C:источник
Вы можете реализовать свою собственную функцию модуля для этого:
Тогда вы можете просто использовать,
dmod(6.3, 2)
чтобы получить остаток0.3
.источник