2016-12-12 4 views
1

Это не весь мой код, но я продолжаю получать эту ошибку: недействительные операнды в двоичном выражении.Недопустимые операнды для двоичного выражения ('double' и 'double')

printf("How much change is owed?\n"); 
float change= GetFloat(); 
float roundf(float change); 
change*=100; 
int rem; 

while (change>0) 

{ 
    if(change>=0.25) 
    rem=change % 0.25;  > error, saying that this is a double???? 
} 
printf ("%d\n", rem);   I need the modulo , it is not working 
return 0; 
+0

Вместо этого используйте fmod (a, b). – dasblinkenlight

+0

После умножения на 100 и округления вы должны иметь возможность записать остальную часть программы, используя целочисленные математические и целочисленные переменные. – user3386109

+0

Хммм, если 'change> 0.0' then' while (change> 0) { if (change> = 0.25)rem = whatever; } 'выглядит как бесконечный цикл. – chux

ответ

2

В C и C++ оператор % не определен для чисел с плавающей запятой. Он определен только для целых типов.

Таким образом, компилятор выдает ошибку, потому что в этом выражении

rem=change % 0.25; 

оба операнда числа с плавающей. Здесь 0.25 является плавающим литералом типа double, а переменная change объявлена ​​как имеющая тип float.

float change= GetFloat(); 

Использование fmod или remainder функции из <math.h>.