2015-02-18 2 views
1

Я хочу форматировать поплавок с точностью в качестве параметраПередача точности в качестве параметра формата питона

"{0:,.2f}$".format(1000 + 1/float(3)) 
'1,000.33$' 

Как я могу передать количество знаков после запятой (.2f) в качестве параметра?

Только для справки, я знаю, что могу использовать round(n,precision), но затем, когда precision=0 печатает 0.0, что я не хочу. Я также могу сцепить как "{0:,." + str(precision) + "2f}f".format(n) но вы знаете ...

ответ

4

Вы можете гнездятся поля формата динамически определить точность:

>>> "{1:,.{0}f}$".format(2, 1000 + 1/float(3)) 
'1,000.33$' 
>>> 

Из docs:

format_spec поле может также включают в себя вложенные поля замены в пределах . Эти вложенные поля замены могут содержать только имя поля; Не допускаются флаги преобразования и спецификации формата. Поля замены в пределах format_spec заменяются до строки format_spec. Это позволяет динамически определять форматирование значения .

+0

Спасибо. Поэтому в основном решение заключается в перемещении конкатенации '. '. + str (точность) + 'f'' от фактического формата до параметра? Это не так. – haki

+0

ОК. получилось, '' {1:. {0} f} $ ". format (2, 1000 + 1/float (3))' – haki

+0

Да, это правильно. В вашем вопросе говорилось, как положить '.2f' в строку, поэтому я пошел с этим изначально. Я обновил свой ответ на то, что вы действительно хотели. – iCodez

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