Я хочу отобразить:
49
так как 49.00
и:
54.9
так как 54.90
Независимо от длины десятичного разделителя или наличия десятичных разрядов, я хотел бы отобразить Decimal
с двумя десятичными разрядами, и я хотел бы сделать это эффективным способом. Цель состоит в том, чтобы отобразить денежные значения.
например, 4898489.00
python
string-formatting
orokusaki
источник
источник
Ответы:
Я полагаю, вы, вероятно, используете
Decimal()
объекты изdecimal
модуля? (Если вам нужно ровно две цифры точности после десятичной запятой с произвольно большими числами, вам определенно следует это сделать, и именно об этом говорит заголовок вашего вопроса ...)Если это так, в разделе « Десятичные вопросы и ответы » в документации есть пара вопросов / ответов, которая может быть полезна для вас:
Следующий вопрос гласит
Если вам нужен ответ на этот вопрос (наряду с множеством другой полезной информации), см. Вышеупомянутый раздел документации . Кроме того, если вы сохраняете свои
Decimal
s с двумя цифрами точности после десятичной запятой (то есть настолько, насколько это необходимо, чтобы все цифры оставались слева от десятичной запятой и две справа от нее и не более ...), тогда преобразование их в строки сstr
будет работать нормально:источник
Вы должны использовать новые спецификации формата, чтобы определить, как должно быть представлено ваше значение:
Временами документация может быть немного тупой, поэтому я рекомендую следующие, более удобочитаемые ссылки:
.format()
строки форматирования%
строки форматирования с новым стилем.format()
строкой форматированияВ Python 3.6 введена интерполяция литеральных строк (также называемая f-строками), так что теперь вы можете написать выше еще более кратко:
источник
format
действительно возвращает, аstr
неfloat
:print type({0:.2f}".format(pi))
возвращает<type 'str'>
.return
. Пожалуйста, мысленно измените это наprint
s."{:.2f}".format(pi)
0:
? Я предполагаю, что.
является частью строки PythonРаздел « Операции форматирования строки» документации Python содержит ответ, который вы ищете. Коротко:
Некоторые примеры:
источник
0
после%
, и нет необходимости, чтобы обернутьnum
вtuple
.r = 1; "%s" % r; r = (1, 2); "%s" % r
противr = 1; "%s" % (r,); r = (1,2 ); "%s" % (r,)
. Таким образом, большинство сложных стилей кодирования в Python теперь используют безусловный кортеж (и Python 3 исключил весь метод форматирования строк как подверженный ошибкам).Вы можете использовать оператор форматирования строки следующим образом:
Я не уверен, что вы подразумеваете под «эффективными» - это почти наверняка не является узким местом вашего приложения. Если ваша программа работает медленно, сначала профилируйте ее, чтобы найти горячие точки, а затем оптимизируйте их.
источник
Вы можете изменить
2
в2f
любое количество знаков после запятой , которые вы хотите показать.РЕДАКТИРОВАТЬ:
От
Python3.6
это переводится как:источник
.format - более удобный способ обработки переменных:
источник
В Python 3 способ сделать это будет
источник
если у вас есть несколько параметров, вы можете использовать
источник
Если вы используете это для валюты, а также хотите, чтобы значение было разделено на
,
s, вы можете использовать$ {:,.f2}.format(currency_value)
,например:
currency_value = 1234.50
$ {:,.f2}.format(currency_value)
-->
$ 1,234.50
Вот немного кода, который я написал некоторое время назад:
print("> At the end of year " + year_string + " total paid is \t$ {:,.2f}".format(total_paid))
источник
Самый простой пример, который покажет вам, как это сделать:
Код:
>>> points = 19.5
>>> total = 22
>>>'Correct answers: {:.2%}'.format(points/total)
`Вывод: правильных ответов: 88,64%
источник
что о
источник