Как работает "%. * G"% (6, k) в python - PullRequest
0 голосов
/ 03 мая 2018

У меня есть следующий фрагмент кода: (Python 2.7)

k = 4535.65463456
out = '%.*g' % (6,k)
print str(out)

Выход: 4535.65

Я не могу понять работу '%.*g' % (6,k). Поскольку я не знаком с этим синтаксисом и не знаю, как он называется, я даже не могу его погуглить. Может ли кто-нибудь помочь мне с этим?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

С синтаксисом заимствованного C "%6g" вы можете указать python отображать число с плавающей запятой максимум из шести цифр (если число не слишком большое).

Это означает, что если целая часть числа имеет 4 цифры, она будет использовать 2 оставшиеся цифры, чтобы вывести наиболее значимую десятичную часть.

Теперь, если мы хотим сделать его параметризуемым, нам нужно сгенерировать строку формата, что не очень удобно, поэтому Python ввел Параметризованную точность в таких строках.

'%.*g' % (6,k)

печать k с 6 цифрами макс.

Теперь вы будете лучше использовать «новое» форматирование, используя format, которое позволяет «вложенному» форматированию генерировать внешнее форматирование (поэтому нет необходимости в сложном синтаксисе .*):

'{:.{prec}g}'.format(k, prec=6)    # courtesy of Dan comment

Здесь prec даже не специальное ключевое слово, просто имя параметра, переданное как ключевое слово функции. Это как:

'{:6g}'.format(k)

Существует целый веб-сайт, посвященный старым и новым стилям Python: https://pyformat.info/

(а также более новый синтаксис со строками формата Python 3.6 ... https://www.python.org/dev/peps/pep-0498/)

0 голосов
/ 03 мая 2018
out = '%.*g' % (6,k)

это означает, что он напечатает nember после, 6; посмотри на '%.' %. = 4535., то будет напечатано «. * G», * = 6, число после «,», затем g = 5, затем число после 6

...