c/c++开发分享如何在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; 

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

      以上就是c/c++开发分享如何在C中使用模数将Float转换为Int?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545980.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注