关于用小数点符号的浮点数字问题

print("%3.1f"%1.6)
中%3.1f什么意思 为什么要用3.1f

%m.nf:输出共占m列,小数点后保留n位,如数值宽度小于m左端补空格。 但你这个%1.6看不出来,如果是%4.1f就可以看出来了,打印出来是 1.6 即前面补了一个空格,总体占位达到4同时小数点后保留了1位

1、%3.1f是输出的一种格式,该格式为:%x,yf,意思是输出x位整数,精确到小数点后y位。

以小数形式输出实数,
用e时指数以“e”表示(如1.2e+02),
用E时指数以“E”表示(如1.2E+02)。
默认输出格式小数位数6位,指数5列(e+002)
例如:
%m.nf指定输出的数据共有m位,其中有n位小数。如果数值长度小于m,则左端补空格;如果长度超过m,原样输出。%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。
%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。

printf打印格式为:%[flags][width][.prec][length][type]模式
首先问题中的%3.1f是一个右对齐的格式,左对齐是3前面加个负号。
3:[width]表示输出的最小长度(包含小数点),对于右对齐,打印长度小于3时,左侧补充空格。
.1:[.prec]对于浮点f,表示打印小数点后的位数。
比如:用%10.2f打印浮点数1.0,打印的结果6个空格加1.00。
如果想详细了解printf原理及其打印规则请参看C语言Printf函数深入解析