C - 计算并将int打印为float

时间:2017-01-25 22:12:13

标签: c

我正在编写switch语句,并尝试将f打印为浮点数。在这种情况下,a为40,b为400,所以我需要打印出0.1

我的问题是,由于fint,我该怎么办?我已经尝试使用%f代替%d,我也将a投射为float。但每次只打印0.00000000

case '/': f = a / b; printf("f = %d\n", f);

只是澄清所有三个值都是整数。

4 个答案:

答案 0 :(得分:4)

如果您希望f存储float值,则需要将其声明为float。您还需要将ab转换为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