2009-09-15 5 views
15

Я хочу наложить некоторые процентные значения, чтобы всегда существовало 3 единицы до десятичного разряда. С ints я мог бы использовать '% 03d' - есть ли эквивалент для float?Пэд python плавает

«% .3f» работает после запятой, но «% 03f» ничего не делает.

ответ

33

«% 03.1f» работает (1 может быть любое количество, или пустая строка):

>>> "%06.2f"%3.3 
'003.30' 

>>> "%04.f"%3.2 
'0003' 

Обратите внимание, что ширина поля включает в десятичной и дробной цифры.

+3

Если значение отрицательное, ведущий «- 'будет потреблять один из полей ширины поля - «% 06.2f»% -3.3 дает «-03.30», поэтому, если вы м ust имеет 3 цифры, даже если они отрицательные, вам придется добавить еще одну ширину поля. Вы можете сделать это, используя значение ширины поля * *, и передать вычисленное значение: значение = -3.3; print "% 0 * .2f"% (6+ (значение <0), значение) – PaulMcG

+0

Вот что означал @PaulMcGuire, но с использованием 'format':' value = -3.3; print "{t: 0 {format} .2f}". format (format = 6 + (значение <0), t = значение) '. – Adobe

7

Вы также можете использовать zfill.

str(3.3).zfill(5) 
'003.3' 
+0

Этот ответ более Pythonic, чем форматирование строк. – refi64

4

В качестве альтернативы, если вы хотите использовать .format:

   {:6.1f} 
       ↑ ↑ 
       | | 
# digits to pad | | # of decimal places to display 

Copypasta: {:6.1f}

Пример использования:

'Num: {:6.1f}'.format(number) 

 Смежные вопросы

  • Нет связанных вопросов^_^