【问题标题】:C formatted string - How to add leading zeros to float and int values? [duplicate]C 格式化字符串 - 如何将前导零添加到 float 和 int 值? [复制]
【发布时间】:2013-01-21 18:35:46
【问题描述】:

可能重复:
Extra leading zeros when printing float using printf?

我试图让这个 C 程序的输出具有占位符零,因为这个程序的输出将用作另一个程序的输入。现在,我正在使用以下打印行。

fprintf(fp1, "06 BR%d%d   %3.4f%3.4f%3.4f\n",i,d,X,Y,Z);

i = index for the loop
d = index for a second loop
X = double for a Cartesian system
Y = double for a Cartesian system
Z = double for a Cartesian system

现在的输出如下所示:

06 BR12   1.00001.00001.0000

我希望它是这样的:

06 BR0102   001.0000001.0000001.000

我知道我可以手动添加占位符零(如果 i

提前谢谢你。

【问题讨论】:

    标签: c formatting placeholder output printf


    【解决方案1】:

    例如,您可以使用%08.4f 补零。请注意,第一个数字是 整个 字段宽度,而不仅仅是小数点前所需的位数。在您的示例中,%3.4 中的 3 无效。如果您希望最后一个数字只有三个小数位,那么您需要 %07.3f 那个。

    %d 格式更容易 - 在您的情况下,只需 %02d 即可。

    【讨论】:

      【解决方案2】:

      以下格式会对您有所帮助。

      float a = 1;
      int x = 1, y = 2;
      printf("06 BR%02d%02d   %08.4f %08.4f %08.4f\n", x, y, a, a, a);
      

      对我来说输出是

      06 BR0102   001.0000 001.0000 001.0000
      

      【讨论】:

      • 稍微解释一下就好了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 2015-12-16
      • 2014-09-09
      • 2016-02-12
      • 2016-08-25
      • 2012-02-06
      • 2021-02-06
      相关资源
      最近更新 更多