How do I pad a printf to take account of negative

2020-05-20 07:21发布

问题:

I'm trying to output some numbers in a log file and I want to pad a load of floats via the printf function to produce:

 058.0
 020.0
 038.0
-050.0
 800.0
 150.0
 100.0

Currently I'm doing this:

printf("% 03.1f\n", myVar);

...where myVar is a float. The output from that statement looks like this:

58.0
20.0
38.0
-50.0
800.0
150.0
100.0

From what I've read I would expect my code to produce the output I mentioned at the top of this post, but clearly something is wrong. Can you only use one flag at a time? ..or is there something else going on here?

回答1:

The width specifier is the complete width:

printf("%05.1f\n", myVar);  // Total width 5, pad with 0, one digit after .

To get your expected format:

printf("% 06.1f\n", myVar);


回答2:

follows Erik, but I find

printf("% 6.1f\n", myVar);

also works.