如何在c中划分2个整数?

How to divide 2 int in c?

想除以 2 个数字并得到这样的结果:

5 / 2 = 2.50

但是只输出2个

我现在不知道我做错了什么。

这是我的代码:

int a;
int b;
int c;
printf("First num\n");
scanf("%d", &a);
printf("Second num\n");
scanf("%d", &b);
c = a / b;
printf("%d", c);

您需要一个 double 变量来存储结果。 int 仅存储整数。此外,您还必须在执行除法之前对其他变量进行类型转换。


做这样的事情

double c;
.
.
.
c = (double)a / (double)b;
printf("%f", c);

注意:

您不需要 printf() 语句中的 &

您必须使用 floatdouble 变量,而不是 int(整数)变量。另请注意,两个整数之间的除法将导致整数结果,同时 float/double 与整数之间的除法将导致浮点数结果。那是因为 C 隐式地将这个整数提升为 float.

例如:

5/2 = 2
5/2.0f = 2.5f

注意 .0f,这实际上意味着我们用浮点数除法。

'/' - 符号用于除法。每当在 C 语言中,您将一个整数除以一个整数并将数据存储在一个整数中,作为输出的答案是一个整数。 例如

int a = 3, b = 2, c = 0;
c = a/b; // That is c = 3/2;
printf("%d", c);

收到的输出是:1
原因是您使用的变量类型,即整数 (int)
每当使用整数存储输出时,结果将存储为整数而不是小数值。

为了存储小数的结果,C语言提供了floatdoublelong floatlong double

每当您执行操作并希望以十进制形式输出时,您可以将上述数据类型用于结果存储变量。 例如

int a = 3, b = 2;
float c = 0.0;
c = (float)a/b; // That is c = 3/2;
printf("%.1f", c);

收到的输出:1.5
所以,我认为这将有助于您理解这个概念。
记住:当您使用float 时,访问说明符是%f。你需要像我一样把你的答案转换成float,然后才会反映出答案。

为了避免 float 中的类型转换,您可以直接使用带有 %f 标志的 scanf。

float a;
float b;
float c;
printf("First number\n");
scanf("%f", &a);
printf("Second number\n");
scanf("%f", &b);
c = a / b;
printf("%f", c);

在C中,只显示int类型的数字。 5/2 给出了一个浮点型数字。所以,编译器只用整数值编译它。