手册提到了format里的“width 是一个定义最小总字段宽度的十进制整数”
但如果我们用浮点数呢?试了试也可以。但会出现两种不同的情况,6、7行的代码运行与1行代码运行无异。但3、4行输出结果中的@怎么就不见了。
所以出现这种差别的原因是什么呢?
print("{0:=^5}".format('@'))#正常情况
print("{0:=^5.0}".format('@'))#浮点数后全是0的情况
print("{0:=^5.00}".format('@'))
print("{0:=^5.01}".format('@'))#浮点数后不全是0的情况
print("{0:=^5.1}".format('@'))
输出结果:
==@==
=====
=====
==@==
==@==
width 如果用浮点数,其中整数部分是输出数据所占据的宽度,不足则用指定字符补齐。
而小数部分是从数据中裁取的长度。对于数值型数据是裁取指定精度的位数,
对于字符串型数据是裁取字符串前指定个数的字符。
5.0就是裁取字符串前0个字符,自然就是空字符串“”,什么也不输出了
print("{0:=^5.2}".format("abc"))#取字符串前2位“ab”
print("{0:=^5.1}".format("abc"))#取字符串前1位“a”
print("{0:=^5.0}".format("abc"))#取字符串前0位“”
这个格式化字符串的语句里的浮点数并不是数学里的概念。
你这里的“浮点数”要拆成两个部分来看:整数部分是你所说的 width 即宽度,不足则不齐;小数部分是precision
即精度,超过这个长度则会被舍掉。
你代码里 .0 就是精度为 0,相当于不给字符串任何生存的空间,自然就不显示了。