想分割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);
答案 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语言提供float
,double
,long float
和long 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给出浮点类型编号。因此,编译器仅使用整数值编译它。