""/> "">

>백엔드 개발 >파이썬 튜토리얼 >Python 반올림이 짝수로 변하는 이유는 무엇입니까?

Python 반올림이 짝수로 변하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-17 15:53:29809검색

Why Does Python Round Half-Floats to Even Numbers?

반부동 숫자 반올림

Python의 round() 함수는 반부동 숫자를 반올림할 때 당황스러울 수 있는 비정상적인 동작을 나타냅니다. 이 동작을 더 자세히 살펴보겠습니다.

<code class="python">for i in range(1, 15, 2):
    n = i / 2
    print(n, "=>", round(n))</code>

이 코드는 다음을 인쇄합니다.

0.5 => 0
1.5 => 2
2.5 => 2
3.5 => 4
4.5 => 4
5.5 => 6
6.5 => 6

예상과 달리 부동 값은 항상 반올림되지 않습니다. 대신, 절반 값인 경우에도 가장 가까운 짝수로 반올림됩니다. 이 동작은 Python 문서의 "숫자 유형" 아래에 문서화되어 있습니다:

"round(x[, n])

x는 n 자리로 반올림되고, 반은 짝수로 반올림됩니다. n이 생략된 경우 , 기본값은 0입니다."

"뱅커 반올림"이라고 알려진 가장 가까운 짝수로 반올림하는 것은 반올림의 평균을 내서 반올림 오류를 줄이는 것을 목표로 합니다.

더 많은 제어권을 얻으려면 반올림 동작과 관련하여 소수 모듈은 보다 유연한 접근 방식을 제공합니다. 다음 예에서는 소수 모듈을 사용하여 반올림하는 방법을 보여줍니다.

<code class="python">from decimal import localcontext, Decimal, ROUND_HALF_UP
with localcontext() as ctx:
    ctx.rounding = ROUND_HALF_UP
    for i in range(1, 15, 2):
        n = Decimal(i) / 2
        print(n, '=>', n.to_integral_value())</code>

출력:

0.5 => 1
1.5 => 2
2.5 => 3
3.5 => 4
4.5 => 5
5.5 => 6
6.5 => 7

localcontext() 내에서 반올림 매개변수를 조정하여 반올림을 사용자 정의할 수 있습니다. 필요에 따라 동작하여 특정 반올림 시나리오에 대한 정확한 결과를 보장합니다.

위 내용은 Python 반올림이 짝수로 변하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.