[python] 파이썬에서 부동 숫자를 고정 너비로 ​​포맷하는 방법

다음 요구 사항에 따라 부동 숫자를 고정 너비로 ​​포맷하는 방법은 무엇입니까?

  1. n <1 인 경우 선행 0
  2. 고정 폭을 채우기 위해 후행 십진수 0을 추가하십시오
  3. 고정 폭을 지나서 소수점 이하 자르기
  4. 모든 소수점 정렬

예를 들면 다음과 같습니다.

% formatter something like '{:06}'
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print formatter.format(number)

출력은 다음과 같습니다

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000



답변

for x in numbers:
    print "{:10.4f}".format(x)

인쇄물

   23.2300
    0.1233
    1.0000
    4.2230
 9887.2000

중괄호 안의 형식 지정자는 Python 형식 문자열 구문을 따릅니다 . 특히이 경우 다음과 같은 부분으로 구성됩니다.

  • 콜론 앞 의 빈 문자열 은 “다음에 제공된 인수를 가져옵니다”를 의미합니다 format()–이 경우 x유일한 인수입니다.
  • 10.4f콜론 뒤 의 부분은 형식 지정 입니다.
  • f나타내고 고정 소수점 표현.
  • 10인쇄 공백 lefted 패딩되는 영역의 전체 폭이다.
  • 4소수점 이하의 자리수.

답변

이것이 답변 된 지 몇 년이 지났지 만 Python 3.6 ( PEP498 )부터 새로운 것을 사용할 수 있습니다 f-strings.

numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print(f'{number:9.4f}')

인쇄물:

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000


답변

python3에서는 다음이 작동합니다.

>>> v=10.4
>>> print('% 6.2f' % v)
  10.40
>>> print('% 12.1f' % v)
        10.4
>>> print('%012.1f' % v)
0000000010.4


답변

Python 3.x 형식 문자열 구문을 참조하십시오 .

IDLE 3.5.1
numbers = ['23.23', '.1233', '1', '4.223', '9887.2']

for x in numbers:
    print('{0: >#016.4f}'. format(float(x)))

     23.2300
      0.1233
      1.0000
      4.2230
   9887.2000


답변

패드를 0으로 남겨 둘 수도 있습니다. 예를 들어 number길이가 9 자이고 0으로 채워진 왼쪽은 다음을 사용합니다.

print('{:09.3f}'.format(number))

따라서이면 number = 4.656출력은 다음과 같습니다.00004.656

예를 들어 출력은 다음과 같습니다.

numbers  = [23.2300, 0.1233, 1.0000, 4.2230, 9887.2000]
for x in numbers:
    print('{:010.4f}'.format(x))

인쇄물:

00023.2300
00000.1233
00001.0000
00004.2230
09887.2000

이것이 유용 할 수있는 한 가지 예는 파일 이름을 알파벳 순서로 올바르게 나열하려는 경우입니다. 일부 Linux 시스템에서 숫자는 1,10,11, .. 2,20,21, …입니다.

따라서 파일 이름에 필요한 숫자 순서를 적용하려면 적절한 숫자로 0을 채워야합니다.


답변

파이썬 3에서.

GPA = 2.5
print(" %6.1f " % GPA)

6.1f당신은 당신이해야에만 도트 후 2 개 자리를 인쇄하면 점 이후 수단은 1 자리 표시 %6.2f하도록 %6.3f3 자리 숫자는 시점 이후 인쇄 할 수 있습니다.


답변

배열과 비슷한 것이 필요했습니다. 그것은 나를 도왔다

some_array_rounded=np.around(some_array, 5)