Подтвердить что ты не робот

Округление десятичных знаков с помощью новой функции формата Python

Как объединить десятичное число в определенное число десятичных знаков с помощью функции Python 3.0 format?

4b9b3361

Ответ 1

Вот типичный, полезный пример...:

>>> n = 4
>>> p = math.pi
>>> '{0:.{1}f}'.format(p, n)
'3.1416'

вложенный {1} принимает второй аргумент, текущее значение n и применяет его как указано (здесь, к "прецизионной" части формата - количество цифр после десятичной точки) и внешний в результате применяется {0:.4f}. Конечно, вы можете жестко закодировать 4 (или любое количество цифр), если хотите, но ключевой момент: не иметь

Еще лучше...:

>>> '{number:.{digits}f}'.format(number=p, digits=n)
'3.1416'

... вместо мрачных "аргументных чисел", таких как 0 и 1 выше, вы можете использовать яркие имена аргументов и передавать соответствующие значения в качестве ключевых слов (так называемых ") аргументов в format - это может быть так гораздо более читаемым, как вы видите!!!

Ответ 2

В Python 3.x строка формата содержит поля замены, обозначенные фигурными скобками, таким образом:

".... {0: format_spec} ....".format(value)

Спецификация формата имеет общий макет:

[[fill]align][sign][pad][width][,][.precision][type]

Итак, например, оставив все остальное, кроме ширины, точности и кода типа, число в десятичной или плавающей запятой может быть отформатировано следующим образом:

>>>print("The value of pi is {0:10.7f} to 7 decimal places.".format(math.pi))

Это будет печатать как:

The value of pi is  3.1415927 to 7 decimal places.

Ответ 3

Для округления x до n десятичных знаков используйте:

"{0:.{1}f}".format(x,n)

где 0 и 1 обозначают первый и второй аргументы метода str.format(), соответственно.

Ответ 4

Я только выяснил, что можно комбинировать обозначения {0} и {digits}. Это особенно полезно, если вы хотите округлить все переменные до заданного числа десятичных знаков с 1 объявлением:

sName = 'Nander'
fFirstFloat = 1.12345
fSecondFloat = 2.34567
fThirdFloat = 34.5678
dNumDecimals = 2

print( '{0} found the following floats: {1:.{digits}f}, {2:.{digits}f}, {3:.{digits}f}'.format(sName, fFirstFloat, fSecondFloat, fThirdFloat, digits=dNumDecimals))
# Nander found the following floats: 1.12, 2.35, 34.57

Ответ 5

Обновленный ответ, основанный на решении [Alex Martelli], но использующий Python 3.6.2 и обновленный синтаксис формата, я бы предложил:

>>> n=4
>>> p=math.pi
>>> f'{p:.{n}f}'
'3.1416'

Но, выбирая свои переменные с умом, ваш код становится самодокументированным

>>> precision = 4
>>> pi = math.pi
>>> f'{pi:.{precision}f}'
'3.1416'