2016-12-12 30 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'なら' while(変更> 0) { if(変更> = 0.25) rem = whatever; } 'は無限ループのように見えます。 – chux

答えて

2

CおよびC++では、演算子%は浮動小数点数に対しては定義されていません。これは整数型に対してのみ定義されています。

この式で

rem=change % 0.25; 

両オペランドが浮動小数点数であるため、だから、コンパイラはエラーを発行します。ここで0.25は浮動小数点型のdoubleであり、変数changefloatと宣言されています。 <math.h>から

float change= GetFloat(); 

使用fmodまたはremainder機能。

関連する問題