본문 바로가기
📚Languages/Python3 개념·문법·에러

[Python3 문법] format을 이용해서 소수점 이하 자릿수 표현하기

by psS2mj 2020. 10. 24.
반응형

새벽에 알고리즘 문제 풀어보다가 시간초과 나서 머리 좀 식힐 겸, 파이썬 문법 연습 좀 할 겸 백준에서 안 풀어본 브론즈 문제 중에 하나를 골라서 풀어보았다.

 

4344. 평균은 넘겠지 (문제 링크: www.acmicpc.net/problem/4344)라는 아주 기초적인 알고리즘 문제였다.

 

출력 예시

 

쉬운 문제였지만 파이썬 초보인 나에게 공부할 만한 내용이 있었다.

1. 반올림

2. 소수점 이하 3번째 자리까지 출력하기

 

1. 반올림

보통 반올림, 올림, 내림의 경우 다른 언어에서도 round(반올림), ceil(올림), floor(내림)를 사용하고, 찾아보니 파이썬에서도 같은 방법을 사용하면 된다. 다만, round 함수의 경우 내장되어 있지만, ceil과 floor는 import math를 하고 math.ceil과 math.floor의 형태로 사용해야 한다.

 

아무튼 결론은 반올림을 하기 위해서 round 함수를 사용해야 한다는 건데, 문제는...

print(round(40.000, 3))

이렇게 round 함수를 써서 소숫점 이하 3번째 자리까지 표시하라고 설정을 해도, 40.000%가 아니라 40.0%으로 출력이 되어버린다. 끝자리가 0이면 출력을 하지 않는다는 점이 round 함수의 문제점이라고 한다.


2. 소수점 이하 3번째 자리까지 출력하기

그래서 어떤 방법으로 40.000%을 출력해줄 수 있을까 고민하다가 서식을 지정할 수 있는 format 메소드에 대해서 알게 되었다.

👆🏻클릭 시 해당 문서로 이동합니다.

좀 어렵긴 하지만 익숙해지면 도움이 될 것 같다.

 

아무튼 결론은 이 format 메소드를 이용해서 내가 원하는 대로 값을 출력할 수 있다는 거니까 한 번 해보자.💪🏻

테스트 코드 (사진으로 보기)
결과

print("{}%".format(round(40.000, 3)))
print("{:.3f}%".format(40.0000))
print("{:.3f}%".format(40.6664))
print("{:.3f}%".format(40.6666))

출력 결과:
40.0%
40.000%
40.666%
40.667%

 

위에서 설명한 대로, round 함수를 사용하면 반올림이 되기는 하지만 끝자리가 0일 때는 자기 마음대로 자릿수를 짤라먹고 출력해버린다.

 

반면, format 메소드를 이용해서 "{:.3f}" 이런 식으로 조건을 걸어주면 내가 원하는 대로 소수점 이하 3번째 자리까지 정상적으로 출력되는 모습을 확인할 수 있다. 그리고 테스트 코드를 통해 확인해 보니 알아서(?) 반올림 처리를 하는 듯하다. 이 부분에 대해서는 나중에 조금 더 자세히 공부하도록 하고 오늘은 이 정도 선에서 끝!

 

format 메소드를 자유자재로 사용하기 위해서 좀 더 익숙해질 필요가 있을 것 같다.


😎 참고할 만한 사이트:

dojang.io/mod/page/view.php?id=2300

 

파이썬 코딩 도장: 24.2 문자열 서식 지정자와 포매팅 사용하기

파이썬은 다양한 방법으로 문자열을 만들 수 있습니다. 그중에서 서식 지정자(format specifier)로 문자열을 만드는 방법과 format 메서드로 문자열을 만드는 문자열 포매팅(string formatting)에 대해 알아

dojang.io

studyforus.com/tipnknowhow/661111

 

[Python] 소수점 자리수의 출력 - round() vs format() - Study For Us

파이썬은 반올림을 하는 round() 함수를 내장하고 있습니다.그러나 round() 함수는 끝자리가 0이면 출력을 하지 않는 문제가 있습니다.예컨대 round(3.141592, 2)는 3.14를 출력하지만, round(3.101592, 2)는 3.1

studyforus.com

반응형

댓글