방금 Python 3.0의 새로운 기능을 읽고 있었고 다음 과 같이 말합니다.
round () 함수 반올림 전략 및 리턴 유형이 변경되었습니다. 정확한 중간 사례는 이제 0이 아닌 가장 가까운 짝수로 반올림됩니다. 예를 들어 round (2.5)는 이제 3이 아니라 2를 반환합니다.
그리고 round에 대한 문서 :
round ()를 지원하는 내장 유형의 경우, 값은 10의 거듭 제곱 n에 가장 가까운 배수로 반올림됩니다. 두 배수가 동일하게 가까운 경우 고른 선택을 향해 반올림됩니다.
따라서 v2.7.3에서 :
In [85]: round(2.5)
Out[85]: 3.0
In [86]: round(3.5)
Out[86]: 4.0
내가 예상했던대로. 그러나 현재 v3.2.3에서 :
In [32]: round(2.5)
Out[32]: 2
In [33]: round(3.5)
Out[33]: 4
이것은 반 직관적이며 반올림에 대해 이해하는 것과 반대되는 것으로 보입니다 (그리고 사람들을 트립 할 수밖에 없습니다). 영어는 모국어가 아니지만이 글을 읽을 때까지 반올림의 의미를 알고 있다고 생각했습니다. 내 검색.
- 왜 이것이 이것이 변경되었는지에 대한 통찰력이 있습니까?
- 이러한 종류의 (일관되지 않은) 반올림을 수행 하는 다른 주류 프로그래밍 언어 (예 : C, C ++, Java, Perl, ..)가 있습니까?
내가 여기서 무엇을 놓치고 있습니까?
업데이트 : @ Li-aungYip의 "Banker 's rounding"에 대한 의견은 검색 할 올바른 검색어 / 키워드를 제공 했으며이 SO 질문을 발견했습니다 . 그래서 나는 그것을주의 깊게 읽을 것입니다.