有人可以解释为什么我会收到以下代码的错误(我已经附加了代码和错误,只需向下滚动)。其实这是一个功课问题。我之前已经成功地用Python完成了这个问题,现在我被要求用c ++做同样的问题,我基本上只是复制粘贴并改变了语法,但它并没有以某种方式工作。
#include <iostream>
using namespace std;
float reduce(int num,float denom)
{
float a;
if (num>denom)
{
a = denom;
}
if (denom>num)
{
a = num;
}
float sol = 0;
while (a>1)
{
if ( (num<=0) || (denom<=0) )
a = -10;
if ( (num%a == 0) && (denom%a == 0) )
{
sol = 1;
a = -10;
}
a-=1;
}
return sol;
}
int main()
{
float num;float denum;
cout<<"Numerator: ";cin>>num;
cout<<"Denominator: ";cin>>denum;
float sol = Reduce(num,denom);
cout<<sol;
}
[Error] invalid operands of types 'int' and 'float' to binary 'operator%'
[Error] invalid operands of types 'float' and 'float' to binary 'operator%'
答案 0 :(得分:1)
你不能一起获得float和int对象的mod。如果你需要整数mod那么
float a = 10.0;
int b = 10;
// parse float to int and get the mod
int mod = b % ((int)a);
如果你想要绝对mod
float a = 10.5;
int b = 100;
int d = b / a;
float mod = b - (a * d);
根据建议编辑:
使用fmod
函数。在<math.h>
中定义
fmod reference