포맷팅을 할 수 있는 방법에는 2가지가 있습니다.

A = 4
B = 12 
C = 'hi'
D = 3.14159

print('%d   %d   %s   %f'  %(A,B,C,D))
print('{}   {}   {}   {}'  .format(A,B,C,D))


결과 :

4   12   hi   3.141590
4   12   hi   3.14159

%f의 경우 기본 자릿수가 소수점 이하 6으로 되어있지만, { }에서는 그냥 값만 나옵니다.

%를 이용한 포맷팅의 경우는 자료형을 지정해줘야합니다.

 

1. % 포맷팅의 활용 : 자릿수를 지정하거나, 숫자의 경우 공백 대신 0을 채울 수 있다.

A = 4
B = 12 
C = 'hi'
D = 3.14159

print("'%3d'"   %a)    # 기본 공간을 3으로 셋팅. 그 공간에 A = 4를 넣음.    따라서 공백(2) + A(1) = 기본 공간 3이 된다.
print("'%03d'"  %a)    # 위에꺼에서 기본 공간의 나머지를 '0'으로 채운다. (0 이외의 숫자는 불가)
print("'%3d'"   %B)    # 기본 공간을 3으로 셋팅. 그 공간에 B = 12를 넣음.   따라서 공백(1) + A(2) = 기본 공간 3이 된다.
print()
print("'%3s'"   %C)    # 기본 공간을 3으로 셋팅. 그 공간에 C = 'hi'를 넣음. 따라서 공백(1) + A(2) = 기본 공간 3이 된다.
print("'%03s'"  %C)    # 나머지 공간에 문자열을 채우는 것은 불가능. 0은 채워봤자 출력 안 됨. 따라서 의미 없음.
print()
print("'%8f'"   %D)    # 3(1) + .(1) + .141590(6) = 기본 공간 8
print("'%9f'"   %D)    # 기본 공간이 9니 앞에 공백이 하나 생긴다.
print("'%.3f'"  %D)    # 3(1) + .(1) + .14(3) = 기본 공간 5 (소숫점 3자리까지 표기. 이하는 반올림 처리.)
print("'%6.3f'" %D)    # 기본 공간이 6이니 앞에 공백이 하나 생긴다. (전체 기본 공간은 6. 소숫점 3자리까지 표기.)


결과 :

'  4'
'004'
' 12'

' hi'
' hi'

'3.141590'
' 3.141590'
'3.142'
' 3.142'

 

 

2. { } 포맷팅의 활용 : 자릿수 지정이나, 숫자의 경우 공백 대신 0을 채우는 것은 물론, 인덱스 기능과 좌우 정렬까지 가능하다.

인덱스 기능

A = 4
B = 12 
C = 'hi'
D = 3.14159

print('{3}   {0}   {1}   {2}'  .format(A,B,C,D))    # 인덱싱 기능. D(=3.14159), A(=4), B(=12), C(='hi') 순으로 출력된다.


결과 :

3.14159   4   12   hi

 

좌우 정렬을 포함한 자릿수 지정 기능

A = 4
B = 12 
C = 'hi'
D = 3.14159

print("'{:3}'"   .format(A))    # 오른쪽 정렬로 공간 3을 만듦. (기본 셋팅은 오른쪽 정렬)
print("'{:>3}'"  .format(A))    # 오른쪽 정렬로 공간 3을 만듦.
print("'{:>03}'" .format(A))    # 위에꺼에서 기본 공간의 나머지를 '0'으로 채운다. (0 이외의 숫자는 불가)
print("'{:<3}'"  .format(A))    # 왼쪽 정렬로 공간 3을 만듦.
print("'{:<03}'" .format(A))    # 위에꺼에서 기본 공간의 나머지를 '0'으로 채운다. (0 이외의 숫자는 불가)
print()
print("'{:>3}'"  .format(B))    # 오른쪽 정렬로 공간 3을 만듦.
print("'{:<3}'"  .format(B))    # 왼쪽 정렬로 공간 3을 만듦.
print()
print("'{:>3}'"  .format(C))    # 오른쪽 정렬로 공간 3을 만듦.
print("'{:<3}'"  .format(C))    # 왼쪽 정렬로 공간 3을 만듦.
print()
print("'{:>7}'"  .format(D))    # 3(1) + .(1) + .14159(5) = 기본 공간 7
print("'{:>8}'"  .format(D))    # 오른쪽 정렬하고 기본 공간 8을 만드니 앞에 공백이 하나 생긴다.
print("'{:<8}'"  .format(D))    # 왼쪽 정렬하고 기본 공간 을를 만드니 뒤에 공백이 하나 생긴다.
print()
print("'{:>4}'"  .format(D))    # 오픈쪽 정렬하고 기본 공간 4를 만들었으나 초과하므로 의미 없음.
print("'{:>.4}'" .format(D))    # 소수점 포함 기본 공간을 4로 제한. (숫자를 소수점 포함 4자리까지 표기. 이때는 .의 개수는 포함하지 않음.)
                                # 단, 기본 공간은 3(1) + .(1) + .142(3) = 5다.
print("'{:>6.4}'".format(D))    # 오른쪽 정렬하고 기본 공간 6을 만드니 앞에 공백이 하나 생긴다.


결과 :

'  4'
'  4'
'004'
'4  '
'400'

' 12'
'12 '

' hi'
'hi '

'3.14159'
' 3.14159'
'3.14159 '

'3.14159'
'3.142'
' 3.142'

 

% 포맷팅은 자료형을 한정하기 때문에 { } 포맷팅보다 속도가 더 빠르다고 합니다. 다만... 기본 쿼드코어 세상에 살면서 굳이 % 포맷팅을 쓰는 것 보다는 { } 포맷팅이 더 편해보입니다.

 

 

 

자바의 포맷팅과 비교해봅시다.

2020/04/25 - [개발자/Java] - Java (자바) 반올림(올림, 내림) 그리고 자릿수 맞추기(포맷팅)

 

Java (자바) 반올림(올림, 내림) 그리고 자릿수 맞추기(포맷팅)

1. Math.round / Math.ceil / Math.floor public class RoundTest { public static void main(String[] args) { double ABC = 1234.56789; // 곱하기 몇을 하면, 나누기 몇을 하면 몇의 자리니 하는 식으로 생각하..

greendreamtrre.tistory.com

 

+ Recent posts