KEEP GOING

[python] 소수 n째 자리까지 출력하기 (round(), %, format(), f-string) 본문

python

[python] 소수 n째 자리까지 출력하기 (round(), %, format(), f-string)

jmHan 2022. 1. 27. 15:23
반응형

1. round 함수 (round(값, 반올림하려는 자릿수))

# round(값, 반올림하려는 자릿수)
print(round(3.55555))  # (1)
print(round(3.55555, 0)) # (2)
print(round(3.55555, 1))
print(round(3.55555, 3))
print(round(3.55555, 4))

round 함수는 반올림하려는 자릿수가 n이라면 n+1 자리에서 반올림하여 n째 자리까지 값을 나타낼 수 있습니다.
예를들어 3.55555의 반올림하려는 자릿수가 3이라면 값은 3.556이 됩니다.

1의 자리에서 반올림하고 싶은 경우, (1)과 (2)처럼 자릿수에 0을 집어 넣거나 반올림하려는 자릿수를 아예 생략해도 무방합니다. 하지만 (2)번처럼 자릿수를 0으로 설정한다면, 3이 아닌 3.0과 같이 실수형으로 출력된다는 사실을 기억합시다. 그리고 정수형에 변수에 대해 round 함수를 적용한다면 소수 n째 자릿수를 출력할 수 없습니다. 아래의 예제를 보고 이해해봅시다.

print(round(3, 1))
print(round(3, 2))
print(round(3, 3))
print(round(3, 4))

3은 실수가 아닌 정수이기 때문에 애초에 소수점이 없습니다. 따라서 반올림하려는 자릿수에 어떤 값을 넣을지라도 3으로 똑같은 값이 나옵니다.

이렇게 만약 정수인 값을 소수점 n째 자리까지 출력하고 싶다면 어떻게 해야 할까요? 예를 들어 방금 예시로 들었던 3을 3.0 이나 3.00 으로 출력하고 싶은 경우에 말입니다. 이러한 경우에는 문자열 포매팅을 이용하면 됩니다. 특히 코딩테스트를 준비한다면 문제에서 요구하는 방식대로 출력을 해야 하기에 잘 알고 있어야 합니다.


[문자열 포맷팅 String Formatting]

문자열에 특정한 값 또는 변수를 삽입해서 문자열을 예쁘게 처리하는 방법

문자열 포매팅을 이해하기 위해 쉬운 예시를 들어보겠습니다.
print("2022년 새해가 밝았습니다.")를
print("{0}년 새해가 밝았습니다.".format(2022))와 같이 표현하는 것입니다. 이렇게 처리하면 내년이 되어도 내후년이 되어도 문자열 자체를 변경하기 않고 format 함수의 인자 값을 2023, 2024로 변경하면 됩니다.
문자열 포맷팅 방식에는 방금 소개한 format() 함수를 이용하는 방법 외에도 % 서식문자를 사용하는 방식 f-string을 이용하는 방식이 있습니다.

2. format 함수 (format())

print("{:.0f}".format(3.55555))
print("{:.1f}".format(3.55555))
print("{:.2f}".format(3.55555))
print("{:.3f}".format(3.55555))

: 콜론 앞에는 가리키고자 하는 format 인자의 인덱스 값을 넣어주면 됩니다. 인덱스 값은 0부터 시작하는데, 예시에서는 포맷함수의 첫번째 인자로 등장하는 3.55555를 나타냅니다. 자세히 이해하기 위해 또 하나의 예시를 들어보겠습니다.

print("{0}과 {0}".format(3.55555, 3.77777)) #(1)
print("{0}과 {1}".format(3.55555, 3.77777))
print("{0:.3f}과 {1:.3f}".format(3.55555, 3.77777)) # (3)

보이는 것처럼 {0}은 포맷 함수의 첫번째 인자값을 나타내고 이를 '인덱스'라고 부릅니다. 따라서 (1)처럼 인덱스를 둘다 0으로 설정할 경우, 두 값 모두 3.55555를 가리킵니다.

: 콜론을 사용한다면 :0.nf 의 방식으로 출력할 값의 소수점 자리까지 설정해 줄 수 있습니다.
(3)처럼 :0.3f 를 사용한 경우 넷째 자리에서 반올림하여 소수 셋째 자리까지 나타내라는 의미입니다. 따라서 각각 넷째 자리에서 반올림하여 3.5556, 3.778이라는 값이 나옵니다.




3. % 서식 문자

% 뒤에 약속된 형식의 문자를 붙여 원하는 형식대로 값을 출력하는 방식

서식문자 출력 형식
%d 10진수
%o 8진수
%x 16진수
%f 실수(소수점이 붙은 수)
%c 단일 문자
%s 문자열


f는 실수를 출력할 때 사용하는 서식문자열입니다. "%" 문자열과 함께 "f" 서식문자를 사용하면 실수를 포함한 문자열을 반올림하면서 포맷팅할 수 있습니다. 이때 출력하길 원하는 값(실수) 앞에도 반드시 "%"를 붙여줘야 합니다.

print("%0.0f"%3.55555)
print("%0.1f"%3.55555)
print("%0.2f"%3.55555)
print("%0.3f"%3.55555)




4. f-string

문자열 앞에 "f"를 추가하고 중괄호 안에 {실수값:반올림하고자하는 자릿수}를 지정해주면 됩니다. 이 또한 이해하기 쉽게 예시를 들어 보겠습니다.

print(f"{3.55555:.0f}")
print(f"{3.55555:.1f}")
print(f"{3.55555:.2f}")
print(f"{3.55555:.3f}")
print(f"{3.55555:.43f}")


이렇게 반올림 값을 구하는 총 네 가지 방식에 대해 알아 보았습니다 위에서 한번 언급한대로 정수를 소수 n째 자리까지 출력하고 싶은 경우에는 round()함수를 이용할 수 없기에 코딩테스트를 준비한다면 문자열 포맷팅 방식 중 적어도 하나는 숙지해두는 것이 좋을 것입니다.

반응형
Comments