如何在Python中将浮动数字格式化为固定宽度
我想把一个浮动的数字格式化成固定宽度,具体要求如下:
- 如果数字小于1,前面要加零
- 如果数字的位数不够,要在后面加上零,直到达到固定宽度
- 如果小数部分超过了固定宽度,要截断多余的小数位
- 所有数字的小数点要对齐
举个例子:
% formatter something like '{:06}'
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]
for number in numbers:
print formatter.format(number)
输出结果应该是这样的:
23.2300
0.1233
1.0000
4.2230
9887.2000
11 个回答
49
在Python3中,下面的代码可以正常运行:
>>> v=10.4
>>> print('% 6.2f' % v)
10.40
>>> print('% 12.1f' % v)
10.4
>>> print('%012.1f' % v)
0000000010.4
234
这个问题已经有几年没更新了,但从Python 3.6开始(可以查看PEP498),你可以使用新的f-strings
来格式化字符串:
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]
for number in numbers:
print(f'{number:9.4f}')
输出结果:
23.2300
0.1233
1.0000
4.2230
9887.2000
702
numbers = [23.23, 0.1233, 1.0, 4.223, 9887.2]
for x in numbers:
print("{:10.4f}".format(x))
打印
23.2300
0.1233
1.0000
4.2230
9887.2000
花括号里的格式说明符遵循 Python 的格式字符串语法。具体来说,这里包含以下几个部分:
- 冒号前的 空字符串 意思是“使用下一个提供给
format()
的参数”——在这个例子中,就是x
这个唯一的参数。 - 冒号后面的
10.4f
是格式说明。 f
表示固定小数点表示法。10
是打印字段的总宽度,左边用空格填充。4
是小数点后面的数字位数。