我正在编写switch
语句,并尝试将f
打印为浮点数。在这种情况下,a
为40,b
为400,所以我需要打印出0.1
我的问题是,由于f
是int
,我该怎么办?我已经尝试使用%f
代替%d
,我也将a
投射为float
。但每次只打印0.00000000
case '/': f = a / b; printf("f = %d\n", f);
只是澄清所有三个值都是整数。
答案 0 :(得分:4)
如果您希望f
存储float
值,则需要将其声明为float
。您还需要将a
或b
转换为float
,以便将除法结果设为float
。
然后您可以使用%f
格式说明符进行打印。
float f;
...
case '/': f = (float)a / b; printf("f = %f\n", f);
答案 1 :(得分:1)
在存储到float
变量之前,您应该将除法结果转换为f
:
case '/': f = (float) a / b; printf("f = %.2f\n", f);
您还可以使用%n.nf
打印您想要的小数位数。在上面的例子中有2位小数。
另一个示例代码:
float f;
int a = 5;
int b = 3;
f = (float) a/b;
printf ("%2.2f\n", f);
答案 2 :(得分:0)
您不能将浮点值存储在整数1中,因为小数部分将被丢弃,隐式转换为整数,因此您必须将f声明为float或double或float:
float f;
int a(40), b(400);
f = (float)a / (float)b;
printf("%g", f);
答案 3 :(得分:0)
%f
格式说明符不会将整数除法的结果神奇地转换为浮点数,也不会将int
视为float
或{{1} }。您需要自己将double
声明为f
,并确保操作float
不被视为整数除法:
a / b