Как отформатировать плавающее число в фиксированную ширину в Python - PullRequest
259 голосов
/ 17 января 2012

Как отформатировать плавающее число в фиксированную ширину со следующими требованиями:

  1. Ведущий ноль, если n <1 </li>
  2. Добавить завершающий десятичный ноль (и), чтобы заполнить фиксированную ширину
  3. Усечение десятичных цифр после фиксированной ширины
  4. Выровнять все десятичные точки

Например:

% 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

Ответы [ 6 ]

418 голосов
/ 17 января 2012
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 - это количество цифр после десятичной точки.
41 голосов
/ 04 октября 2018

Прошло несколько лет с тех пор, как на него был дан ответ, но начиная с 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}')

Prints:

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000
32 голосов
/ 26 мая 2015

В python3 работают следующие:

>>> v=10.4
>>> print('% 6.2f' % v)
  10.40
>>> print('% 12.1f' % v)
        10.4
>>> print('%012.1f' % v)
0000000010.4
7 голосов
/ 12 июня 2016

См. Синтаксис строки формата 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
0 голосов
/ 28 июня 2019

Вы также можете оставить пэд с нулями. Например, если вы хотите, чтобы 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, ...

Таким образом, если вы хотите принудительно ввести необходимый порядковый номер в именах файлов, вам нужно слева добавить соответствующее количество нулей.

0 голосов
/ 17 августа 2017

В Python 3.

GPA = 2.5
print(" %6.1f " % GPA)

6.1f означает, что после того, как точки показывают 1 цифру, если вы печатаете 2 цифры после точек, вы должны только %6.2f, так что %6.3f 3 цифры печатают послеточка.

...