打印浮点值时出现奇怪的行为

时间:2012-01-11 08:37:20

标签: c

这是我的计算

float c = 5.0 * (12.0 - 32.0) / 9.0;
printf("%f.2", c);

结果是-11.111111.2但我预计是-11.11。有什么问题?

3 个答案:

答案 0 :(得分:5)

格式说明符应为"%.2f"

你现在所拥有的,.2是错误的。这就是为什么你得到的数字比预期的多,以及为什么.2在输出的末尾逐字显示。

答案 1 :(得分:2)

printf("%f.2", c);

应改为

printf("%.2f", c);

更新代码如下:

$ cat f.c 
#include <stdio.h>

int main()
{
    float c = 5.0 * (12.0 - 32.0) / 9.0;
    printf("%.2f \n", c);

    return 0;
}
$ gcc f.c 
$ ./a.out 
-11.11 
$ 

答案 2 :(得分:0)

您需要更改float的Format规范;因为它不正确 而不是使用

printf("%f.2", c);

尝试使用:

float c = 5.0 * (12.0 - 32.0) / 9.0;
printf("%1.2f", c); 

这应该有效! :)