浮点数计算器

Float Division Calculator

嘿,我刚开始学习如何使用 C 编程,我在使用计算器的除法部分时遇到了问题。我需要让它浮动并保留 2 位小数。我想我需要使用 %f 而不是 %d 但是当我更改变量时它会中断。粉丝是浮动答案。

这是完整的代码。划分为案例4.

#include <stdio.h>
#include <math.h>

int menu(void);

int main(void){
  int selection, num1, num2, ans;
  float fans;
  selection = menu();
  while (selection !=8) {
    switch (selection) {
        case 1: printf("Enter 1st number: ");
            scanf("%d", &num1);
            printf("Enter 2nd number: ");
                scanf("%d", &num2);
                ans = num1 + num2;
                printf("%d + %d = %d\n", num1, num2, ans);
break;
        case 2: printf("Enter 1st number: ");
                scanf("%d", &num1);
                printf("Enter 2nd number: ");
                scanf("%d", &num2);
                ans = num1 - num2;
                printf("%d - %d = %d\n", num1, num2, ans);
break;
        case 3: printf("Enter 1st number: ");
                scanf("%d", &num1);
                printf("Enter 2nd number: ");
                scanf("%d", &num2);
                ans = num1 * num2;
                printf("%d * %d = %d\n", num1, num2, ans);
break;
    case 4: printf("Enter 1st number: ");
                scanf("%d", &num1);
                printf("Enter 2nd number: ");
                scanf("%d", &num2);
            if(num2 != 0) {
            fans=(float)num1/num2;
                printf("%d / %d = %d\n", num1, num2, ans);
            }
            else {
                printf("Error. Cannot divide by 0!\n");
            }
break;
    case 5: printf("Enter number: ");
                scanf("%d", &num1);
                ans=abs(num1);
                printf("|%d| = %d\n", num1, ans);
break;
    case 6: printf("Enter number: ");
                scanf("%d", &num1);
            if(num1<0) {
                printf("Error. Cannot be a negative number.\n");
            }
        else {
                fans=sqrt(num1);
                printf("Sqrt(%d)=%d\n", num1, ans);
            }
break;
    case 7: printf("Enter base number: ");
                scanf("%d", &num1);
                printf("Enter exponent: ");
                scanf("%d", &num2);
            if((num1==0)&&(num2<=0)){
               printf("Error. Power cannot be represented.\n");
            }
            else {
               fans=pow(num1,num2);
               printf("%d^%d=%d\n", num1, num2, ans);
            }
break;
       default:printf("%d is not a valid selection\n", selection);
      }
     selection=menu();
    }
   printf("Bye!\n");
  }

int menu(void) {
   int choice;
   printf("1 Add\n");
   printf("2 Subtract\n");
   printf("3 Multiply\n");
   printf("4 Divide\n");
   printf("5 Absolute Value\n");
   printf("6 Square Root\n");
   printf("7 Powers\n");
   printf("8 Quit\n");
   scanf("%d", &choice);
 return choice;
}

你很亲近;您打算使用 fans 因为您知道这是一个浮动答案,并且您在上一行进行了计算,但输入错误或忘记使用它。

你是对的 %f:

printf("%d / %d = %f\n", num1, num2, fans);

注意:%.2f 也适用于 2 位精度; %f 有效,但打印小数点后 6 位。请参阅 printf() 的 POSIX 规范:

fdouble — 如果没有给出精度,则以默认精度 6 打印浮点数;小写。

顺便说一下,漂亮的计算器程序:)