如何在C中使用模数将Float转换为Int?

我对C中的Modulus很困惑。我正在写一个小脚本,允许用户输入他们的两个数字变量,然后他们可以加,减,乘,除(简)或模(还没有捕到这个)。 我在这会做错什么? 我得到“无效操作数到二进制%”错误,这意味着我需要将其格式化为int,因为它是一个浮点数。 但是,使用以下方法执行此操作的最佳方法是什么? 任何C帮助将不胜感激。

int main (void) { float number1, number2, result; char symbol; //allow user interaction printf("Enter your formula: \n"); scanf("%f %c %f", &number1, &symbol, &number2); switch (symbol) { case '%': result = number1 % number2; printf("Result: %f \n", result); break; default: printf("Operation Error. Program aborted. \n \n"); break; } printf("Press any key to continue \n"); getchar(); return 0; } 

我在哪里以及如何转换这个?

您可以使用如下语句:

 result = (int)number1 % (int)number2; 

将浮点数转换为整数并执行模数运算,但是你将失去小数精度。

您还可以包含math.h并使用fmod

 result = fmod(number1, number2); 

我建议使用标准C库的fmod函数。

%运算符仅适用于整数类型。 要使用浮点执行相同的任务,您需要执行以下操作:

 #include  float modulus(float a, float b) { return a - b * floor(a / b); } 

Mod是一个整数运算,因此它不能用于浮点数。 你的案子应该是这样的:

 result = (int)number1 % (int)number2; 

它会将浮动转换为整数,并执行mod。 但是,请注意,通过将浮点数转换为整数会丢失精度,因此结果可能不是您所期望的。

更改

 case '%': result = number1 % number2; 

 case '%': result = (int)number1 % (int)number2; 

模数除法用于整数。 将每个操作数转换为整数。