Как отформатировать плавающее число до фиксированной ширины в Python
Как форматировать плавающее число до фиксированной ширины со следующими требованиями:
- Ведущий нуль, если n < 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
Ответы
Ответ 1
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
- это количество цифр после десятичной точки.
Ответ 2
Прошло несколько лет с тех пор, как на них был дан ответ, но начиная с 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
Ответ 3
В python3 работает следующее:
>>> v=10.4
>>> print('% 6.2f' % v)
10.40
>>> print('% 12.1f' % v)
10.4
>>> print('%012.1f' % v)
0000000010.4
Ответ 4
Смотрите синтаксис строки формата Python 3.x:
IDLE 3.5.1
numbers = ['23.23', '.1233', '1', '4.223', '9887.2']
for x in numbers:
print('{0: >#016.4f}'. format(float(x)))
23.2300
0.1233
1.0000
4.2230
9887.2000
Ответ 5
В Python 3.
GPA = 2.5
print(" %6.1f " % GPA)
6.1f
означает, что после точек 1 цифры показывают, если вы печатаете 2 цифры после точек, вы должны только %6.2f
, чтобы после t <3 > печатать 3 цифры после точки.
Ответ 6
Вы также можете оставить блокнот с нулями. Например, если вы хотите, чтобы number
имело длину 9 символов, слева добавьте нули:
print('{:09.3f}'.format(number))
Таким образом, если number = 4.656
, вывод будет: 00004.656
Для вашего примера вывод будет выглядеть так:
numbers = [23.2300, 0.1233, 1.0000, 4.2230, 9887.2000]
for x in numbers:
print('{:010.4f}'.format(x))
печатает:
00023.2300
00000.1233
00001.0000
00004.2230
09887.2000
Один пример, где это может быть полезно, - это когда вы хотите правильно перечислить имена файлов в алфавитном порядке. Я заметил, что в некоторых системах Linux это число: 1,10,11,.. 2,20,21,...
Таким образом, если вы хотите установить необходимый порядковый номер в именах файлов, вам нужно слева добавить соответствующее количество нулей.