#python #python-3.x #format #number-formatting
#python #python-3.x #формат #форматирование чисел
Вопрос:
Я ищу способ форматирования числовой строки в Python таким образом, чтобы у меня была фиксированная ширина, независимо от точности. Я приведу пример ниже:
Предположим, я хочу отформатировать значение с плавающей точкой для фиксированной ширины = 8 и точности = 4. Если я использую следующий код:
number = 3.141516
'{:8.4f}'.format(numero)
это хорошо работает для небольших чисел. Но если я хочу отформатировать число, например 1000000, результат будет 1000000.0000
таким, что ширина будет больше 8.
Есть ли способ, которым я мог бы настроить форматирование таким образом, чтобы в этом случае я мог получить фиксированную ширину?
Заранее спасибо
Комментарии:
1. Использование
{:8g}
может делать то, что вы хотите.2. @TomKarzes это действительно так, спасибо
Ответ №1:
Ширина числа также зависит от точности. Поскольку вам нужна фиксированная ширина, я бы посоветовал вам использовать строки f и установить точность равной ширине, если значение точности больше ширины.
Синтаксис для f строк: f'{значение:{ширина}.{точность}}’
- Точность включает целое число десятичное значение
Вот как вы могли бы его использовать:
n = 3.141516
print(f'{n:{8}.{4}}')
Результат, который вы получите, это:
3.142
Ответ №2:
Я не совсем уверен в том, о чем вы спрашиваете. должна ли ширина 8 включать точку?
посмотрите, отвечает ли это на ваш вопрос:
print(f'{str(float(number)) "0"*8}'[:8])
но обратите внимание, что в 7-значном целом числе в конце останется точка, поэтому вам нужно перехватить это исключение. Я предполагаю, добавив 0 перед числом и заменив точку, чтобы она сохраняла ширину 8, но это зависит от того, что вы ищете.
Комментарии:
1. Да, ширина должна включать точку, я собираюсь записывать числа в файл фиксированного формата. Спасибо за совет