为什么在使用float时打印这种格式化的输出?

时间:2018-03-22 14:48:37

标签: c

在这个底层代码中:

   float j=9.01;
   printf("%2.3f \n",j);

输出为9.010,不应该为整个 j 保留 2个字符宽,其中包括 3 对于小数 - 所以它使得没有。在小数点之前, 9 消失,只打印 01

我在哪里错了?

1 个答案:

答案 0 :(得分:3)

让我们quote the man page

  

字段宽度

     

在任何情况下,不存在或小的字段宽度都不会导致字段截断;如果转换结果比字段宽度宽,则扩展该字段以包含转换结果。

  

精确度

     

这给出了d,i,o,u,x和X的最小位数   转换,基数字符后显示的位数   a,A,e,E,f和F转换[...]

字段宽度太小,但字段永远不会被截断,因此无关紧要。

句点之后的部分显然是精确度,你需要三位数。