1
2
3
4
5
6
7
8
9
10
11
#include "stdio.h"
int main()
{
int a = 1234;
float b = 123.456;
double c = 12345.54321;
printf("%2d,%2.1f,%2.11f", a, b, c);
}

输出:
1234,123.5,12345.54321000000
  • %md:m为指定输出数据的宽度
    如果位数小于 m,则左端补以空格,如果大于 m,则按实际位数输出
    显然 1234 的位数是 4,大于 %2d 中指定的长度 2,按实际位数输出,所以结果为 1234
  • %m.nf:指定输出数据宽度为 m 位,其中小数占 n 位,如果数值长度小于 m,则左端补空格,大于的话就按原长度输出;%-m.nf 如果数值长度小于 m,则右端补空格,大于的话就按原长度输出
    %2.1f 就是指长度 2 位,含 1 位小数位,由于 123.456 原长度大于 2,所以原样输出,但只能保留 1 位小数,所以结果是 123.4
    %2.11f,就是含 11 位小数,12345.54321 显然长度不够,则右端补零