[Python] round와 float

글을 쓰게된 이유

알고리즘 문제를 풀다가 분명 맞는 문제인데 제출을 하면 틀렸다고 나왔다. 여러번 봐도 알고리즘은 문제가 없었는데 틀리니까 정신이 혼미했다. 좌표계를 다루는 문제이기에 실수 연산에서 문제가 발생했다고 추측했지만 문제를 찾기가 어려웠다...

한참을 고민하다가 도움을 위해 질문 게시판을 쭉 돌아보니 출력을 format(num, '.2f')로 바꾸라는 글을 보고 시도했더니 바로 성공했다. 원래는 round(num, 2)를 썻다.

내가 알기로는 format이나 round나 같은 값이 나오는 걸로 알고 있었는데 잘못 알고 있었나 보다.

원인

해당 문제는 백준 1774번 우주신과의 교감으로 마지막 출력 조건이 매우 매우 중요했다.

출력
첫째 줄에 만들어야 할 최소의 통로 길이를 출력하라. 출력은 소수점 둘째짜리까지 출력하여라.

소수점 둘째자리까지 출력하라는게 꼭 2자리까지 출력해야함을 의미했던 것이다. float값으로는 format이나 round로 만드나 같았지만 str이기에 달랐다. 아래 코드와 같은 상황에서는 문제가 될 수 있다는 걸 알았다.

코드

target = 1.103
a = str(round(target,2))
b = format(target,".2f")
print(a)
print(b)

결과

1.1
1.10

느낀점

지문을 잘 읽자..... 완전 국어겜인데

좋은 웹페이지 즐겨찾기