Форматирование строки с использованием "{0: d}". Формат дает неизвестный код формата 'd' для объекта типа 'float' - PullRequest
15 голосов
/ 12 апреля 2011

Если я правильно понял документы, в python 2.6.5 форматирование строк "{0: d}" будет делать то же самое, что и "% d" с помощью метода форматирования строк String.format ()

" I have {0:d} dollars on me ".format(100.113)

Должно быть напечатано «У меня есть 100 долларов»

Однако я получаю ошибку:

ValueError: Неизвестный код формата 'd' для объекта типа 'float'

Другие операции форматирования работают, например,

>>> "{0:e}".format(112121.2111)
'1.121212e+05'

Ответы [ 3 ]

20 голосов
/ 12 апреля 2011

Эта ошибка означает, что вы передаете число с плавающей точкой в ​​код формата, ожидая целое число. Вместо этого используйте {0:f}. Таким образом:

"I have {0:f} dollars on me".format(100.113)

даст:

'I have 100.113000 dollars on me'
5 голосов
/ 12 апреля 2011

Да, вы правильно поняли.Однако вы передаете float (то есть 100.113), а не int.Или конвертируйте его в int: int(100.113) или просто передайте 100.

0 голосов
/ 30 мая 2017

удалить 'd', поскольку тип объекта может не быть числом, как в моем случае

...