Как я могу отформатировать число с плавающей точкой в Python, разделенное шириной, а не точностью?

#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. Да, ширина должна включать точку, я собираюсь записывать числа в файл фиксированного формата. Спасибо за совет