如何在c中划分2 int?

时间:2016-01-28 19:05:00

标签: c division

想分割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);

5 个答案:

答案 0 :(得分:10)

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

做这样的事情

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

注意:

&语句中不需要printf()

答案 1 :(得分:2)

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

例如:

5/2 = 2
5/2.0f = 2.5

注意.0,这实际上意味着我们用浮动划分。

答案 2 :(得分:2)

'/' - 符号用于划分。无论何时在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,就像我一样,然后答案就会反映出来。

答案 3 :(得分:2)

为避免浮动中的类型转换,您可以直接使用带有%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);

答案 4 :(得分:-3)

在C中,仅显示int类型编号。 5/2给出浮点类型编号。因此,编译器仅使用整数值编译它。