이 글은 Python에서 소수점 자리 올림과 반올림에 대해 소개합니다. 이는 특정 참조 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
1. 기본 지식 준비
반올림 규칙, Banker's Rounding이라고도 알려진 홀수 반올림은 계산 유지 방법이자 숫자 반올림 규칙입니다. 통계적 관점에서 보면 "홀수 및 짝수 반올림"이 "반올림"보다 더 정확합니다. 많은 수의 작업에서 반올림 후 결과 중 일부는 더 커지고 일부는 더 작아지기 때문에 반올림된 결과의 평균 오차는 be는 0이 되는 경향이 있다. 반올림처럼 5개씩 수행하는 대신 결과가 큰 숫자 쪽으로 치우쳐 오류가 누적되어 체계적인 오류가 발생하게 됩니다. "홀수 반올림을 짝수 반올림으로"는 반올림 오류가 측정 결과에 미치는 영향을 최소화합니다.
숫자 반올림(값 반올림) - 특정 수치 연산을 수행하기 전에 원래 값의 마지막 몇 자릿수를 생략하고 나머지 마지막 자릿수를 조정하여 최종 값이 원래 값 프로세스에 가장 가깝도록 합니다.
Infinity Infinity
NaN(Not a Number, not a number)은 컴퓨터 과학에서 숫자 데이터 유형의 값 유형으로 정의되지 않거나 표현 불가능한 값을 나타냅니다. 부동 소수점 연산에 자주 사용됩니다. NaN은 1985년 IEEE 754 부동 소수점 표준에 처음 도입되었습니다. 부동 소수점 연산에서 NaN과 무한대의 개념은 다르지만 둘 다 실수를 부동 소수점 숫자로 표현할 때 특별한 값입니다. 또한 잘못된 연산은 산술 오버플로(무한대를 반환할 수 있음) 및 산술 언더플로(가장 작은 일반 값, 특수 값, 0 등을 반환할 수 있음)와도 다릅니다. IEEE 754-1985에서 NaN은 지수 부분이 모두 1이고 소수 부분이 0이 아닌 것으로 표시됩니다. 32비트 IEEE 단정밀도 부동 소수점 숫자의 NaN을 예로 들면, 비트 단위 표현은 다음과 같습니다: S111 1111 1AXX XXXX XXXX XXXX XXXX XXXX, S는 부호 비트이고 부호 비트 S의 값은 관련이 없습니다
파이썬에서 정밀한 수치 연산을 수행할 때, decimal
모듈은 일반적으로 십진수 연산에 사용되는데, 이는 십진수 십진수, 문맥 산술 문맥 매개변수 및 신호 신호 정보를 사용합니다decimal
模块对小数进行运算,其中用到了,十进制数decimal number, context算数上下文参数, signals信号信息
我们发现,使用round()
取整小数时,并不是想要的四舍五入,原因就在于取整规则是采用了奇进偶舍(四舍六入)的方式,简单来说就是,整数部分为奇数,四舍五入.如果是偶数,就采用五舍六入的方式,而这个规则,就属于数值修约
우리는 round()소수점을 반올림할 때 반올림이 원하는 대로 되지 않습니다. 그 이유는 반올림 규칙이 홀수 짝수 반올림(반올림) 방법을 채택하기 때문입니다. 짝수일 경우 반올림을 사용하며
숫자 반올림
2.Quantize
quantize`(*exp* [,*rounding* [,*context* [,*watchexp* ] ] ] )
에 속합니다. 반올림 후 값을 반환합니다. 첫 번째 피연산자와 같음 의 값은 두 번째 피연산자의 지수를 갖습니다.
>>> Decimal('1.41421356').quantize(Decimal('1.000')) Decimal('1.414')
3. 반올림 구현
반올림 후 첫 번째 피연산자와 같고 두 번째 피연산자의 지수를 갖는 값을 반환합니다. 이 exp의 지수는 왼쪽 숫자의 지수, expont 위 내용은 Python의 소수 자리 올림 및 반올림 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!# 实现四舍五入的方法
>>> from decimal import Decimal, ROUND_HALF_UP
>>> Decimal('0.375').quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)
Decimal('0.38')
>>> Decimal('0.125').quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)
Decimal('0.13')