""/> "">
반부동 숫자 반올림
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!