3

可能重复:
使用 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<10,添加占位符等),但是有没有比简单地在 if 语句中添加占位符更有效的方法来输出占位符零?

先感谢您。

4

2 回答 2

9

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

%d格式更容易 - 在你的情况下,应该%02d这样做。

于 2013-01-21T18:36:59.077 回答
3

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

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
于 2013-01-21T18:55:44.573 回答