如何在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;
?
模数除法用于整数。 将每个操作数转换为整数。