python에서 round질문(소수점)

조회수 5351회
round(1.5)
round(2.5)
round(3.5)
round(4.5)
round(5.5)
round(6.5)

의 결과물이 각각

2
2
4
4
6
6

이 나오는데요.. 반올림하는 함수로 알고 있었는데 결과물이 왜이렇게 나오는건지 궁금합니다. 2 3 4 5 6 7이 나와야 하는거 아닌가요?

참고> http://tryhelloworld.co.kr/questions/1087에 답변 달려다가 여기에 자문자답으로 옮깁니다.

1 답변

  • python 문서에 보니 이렇게 적혀 있네요.

    Note The behavior of round() for floats can be surprising: for example, round(2.675, 2) gives 2.67 instead of the expected 2.68. This is not a bug: it’s a result of the fact that most decimal fractions can’t be represented exactly as a float. See Floating Point Arithmetic: Issues and Limitations for more information.

    해석하면 2.675를 소숫점 둘째자리까지로 반올림하면 2.67이 나옵니다. 이건 십진수를 소수로 표현한 것이 정확하게 표시하는게 어렵기 때문에 발생하는 문제인데요. 버그는 아닙니다.

    라고 나와 있네요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)