2016-12-12 4 views
1

Dies ist nicht mein gesamter Code, aber ich bekomme immer diesen Fehler: ungültige Operanden binäre Ausdruck.Ungültige Operanden zu binären Ausdruck ('double' und '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

Verwenden Sie stattdessen fmod (a, b). – dasblinkenlight

+0

Nach Multiplikation mit 100 und Runden, sollten Sie in der Lage sein, den Rest des Programms mit Integer-Mathe- und Integer-Variablen zu schreiben. – user3386109

+0

Hmmm, wenn 'change> 0.0' dann 'while (change> 0) { if (change> = 0.25) rem = was auch immer; } 'sieht aus wie eine Endlosschleife. – chux

Antwort

2

In C und C++ ist der Operator % nicht für Gleitkommazahlen definiert. Es ist nur für Integer-Typen definiert.

So gibt den Compiler einen Fehler, da in diesem Ausdruck

rem=change % 0.25; 

die beiden Operanden Zahlen schwimmen. Hier ist 0.25 ein Floating-Literal vom Typ double und die Variable change ist mit dem Typ float deklariert.

float change= GetFloat(); 

Verwenden fmod oder remainder Funktionen von <math.h>.

Verwandte Themen