Недопустимые операнды типов int и double to binary 'operator%'

После компиляции программы я становлюсь ниже ошибки

invalid operands of types int and double to binary 'operator%' at line 
"newnum1 = two % (double)10.0;"

Почему это так?

#include<iostream>
#include<math>
using namespace std;
int main()
{
    int num;
    double two = 1;
    double newnum, newnum1;
    newnum = newnum1 = 0;
    for(num = 1; num <= 50; num++)
    {

        two = two * 2;
    }
    newnum1 = two % (double)10.0;
    newnum = newnum + newnum1;
    cout << two << "\n";
    return 0;
}

Ответы

Ответ 1

Потому что % определяется только для целых типов. То, что оператор модуля.

5.6.2 стандарта:

Операнды * и/должны иметь тип арифметики или перечисления; операнды% должны иметь интегральный или перечисляемый тип. [...]

Как указал Оли, вы можете использовать fmod(). Не забудьте включить math.h.

Ответ 2

Потому что % работает только с целыми типами. Возможно, вы хотите использовать fmod().

Ответ 3

Да. % для двойного типа не определен. То же самое верно и для побитовых операторов, таких как "&, ^, |, ~, <, → ".