%4.2f不是代表输出结果只能有4带宽吗,可是这样输出是213.83呀,这不就是6个带宽吗,如果是这样的话不应该是%6.2f吗,很不理解为什么

#include
int main()
{
float x;
printf("%4.4f\n", x=213.82631);

}

%4.2f格式中4表示域宽最少是4个字符,如果,输出字符位数不足4位,则默认填充空格,但是如果实际输出字符个数超过4个字符,不会被截断,而是按实际字符个数输出。

%4.2f的意思是保留2位小数,且在输出字符数少于4的情况下使用空格来填充,但如果输出大于4是不会影响输出位数的。

那个4表示最小的宽度,而不是限制就是4,如果最终总宽度不足4的话,就会在前面补空格。
后面的2表示小数点后面保留的位数,2就是2,不能多也不能少。