Отформатируйте число, содержащее десятичную точку с ведущими нулями - PullRequest
8 голосов
/ 14 сентября 2011

Я хочу отформатировать число с десятичной точкой в ​​нем с ведущими нулями.

Это

>>> '3.3'.zfill(5)
003.3

учитывает все цифры и даже десятичную точку.Есть ли в Python функция, которая рассматривает только всю часть?

Мне нужно только отформатировать простые числа с не более пяти десятичных знаков.Кроме того, использование %5f, по-видимому, рассматривает трейлинг вместо ведущих нулей.

Ответы [ 4 ]

22 голосов
/ 14 сентября 2011

Это то, что вы ищете?

>>> "%07.1f" % 2.11
'00002.1'

Итак, согласно вашему комментарию, я могу придумать это (хотя уже не так элегантно):

>>> fmt = lambda x : "%04d" % x + str(x%1)[1:]
>>> fmt(3.1)
0003.1
>>> fmt(3.158)
0003.158
9 голосов
/ 25 июня 2015

Мне нравится новый стиль форматирования.

loop = 2
pause = 2
print 'Begin Loop {0}, {1:06.2f} Seconds Pause'.format(loop, pause)
>>>Begin Loop 2, 0002.1 Seconds Pause

В {1: 06.2f}:

  • 1 - место для переменной паузы
  • 0 указывает на заполнение начальными нулями
  • 6 общее количество символов, включая десятичную точку
  • 2, точность
  • f преобразует целые числа в числа с плавающей точкой
2 голосов
/ 14 сентября 2011

Начиная со строки, как это делает ваш пример, вы можете написать маленькую функцию, например, такую, чтобы сделать то, что вы хотите:

def zpad(val, n):
    bits = val.split('.')
    return "%s.%s" % (bits[0].zfill(n), bits[1])

>>> zpad('3.3', 5)
'00003.3'
2 голосов
/ 14 сентября 2011

Как это?

>>> '%#05.1f' % 3.3
'003.3'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...