표준 라 이브 러 리 fractions 모듈 을 이용 하여 Python 이 점수 형식 을 지원 하 는 방법 을 상세 하 게 설명 합 니 다.

머리말
점 수 를 자주 처리 할 필 요 는 없 지만 필요 할 때 Python 의 Fraction 류 는 큰 도움 이 될 것 입 니 다.본 고 는 표준 라 이브 러 리 fractions 모듈 을 이용 하여 Python 이 점수 유형 을 지원 하 는 것 에 관 한 내용 을 상세 하 게 소개 하고 참고 학습 을 제공 할 것 입 니 다.다음은 더 이상 말 하지 않 겠 습 니 다.상세 한 소 개 를 살 펴 보 겠 습 니 다.
fractions 모듈
fractions 모듈 은 점수 형식의 지원 을 제공 합 니 다.
프 랙 션 클래스
이 종 류 는 fractions 모듈 의 핵심 으로numbers.Rational종 류 를 계승 하고 이 모든 방법 을 실현 했다.
구조 함수 가 복잡 하지 않 습 니 다:

class fractions.Fraction(numerator=0, denominator=1) 
class fractions.Fraction(int|float|str|Decimal|Fraction)
분자(numerator)와 분모(denominator)를 동시에 제공 하여 구조 함수 에 Fraction 류 를 예화 하 는 데 사용 할 수 있 으 나 둘 은 int 형식 이나numbers.Rational유형 이 어야 합 니 다.그렇지 않 으 면 유형 오 류 를 던 질 수 있 습 니 다.분모 가 0 이면 초기 화 할 때 이상 제로 디 비 전 오류 가 발생 합 니 다.
하나의 인자 만 제공 하면 상기 다섯 가지 유형 으로 초기 화 할 수 있다.문자열 을 사용 하여 초기 화 할 때 fractions 모듈 은 내 장 된 정규 표현 식 을 사용 하여 일치 합 니 다.부동 소수점 이나 Decimal 을 사용 하여 초기 화 할 때 fractions 모듈 은 내부 에서 호출 됩 니 다as_integer_ratio().
아래 의 코드 예 시 는 공식 문서 에서 나 와 각종 실례 화 된 Fraction 방식 을 보 여 줍 니 다.

>>> from fractions import Fraction
>>> Fraction(16, -10)
Fraction(-8, 5)
>>> Fraction(123)
Fraction(123, 1)
>>> Fraction()
Fraction(0, 1)
>>> Fraction('3/7')
Fraction(3, 7)
>>> Fraction(' -3/7 ')
Fraction(-3, 7)
>>> Fraction('1.414213 \t
') Fraction(1414213, 1000000) >>> Fraction('-.125') Fraction(-1, 8) >>> Fraction('7e-6') Fraction(7, 1000000) >>> Fraction(2.25) Fraction(9, 4) >>> Fraction(1.1) Fraction(2476979795053773, 2251799813685248) >>> from decimal import Decimal >>> Fraction(Decimal('1.1')) Fraction(11, 10)
제한 분모fractions.Fraction.limit_denominator(max_denominator=1000000)때때로 부동 소수점 이나 Decimal 을 Fraction 인 스 턴 스 의 초기 화 데이터 로 사용 하면 반올림 오차 문제 가 발생 할 수 있 습 니 다.예 를 들 어 위 에서 호출Fraction(1.1)할 때 되 돌아 오지 않 습 니 다Fraction(11, 10).이 때 Fraction 류 는 이러한 오 차 를 줄 이 는 인 스 턴 스 방법limit_denominator()을 제공 합 니 다.이 방법 은 원래 분 모 를 제한 하여 유사 치 를 얻 기 위해 서 였 으 나 반올림 오차 가 발생 했 을 때 오히려 결 과 를 더욱 정확 하 게 만 들 었 다.예 를 들 어 다음 의 예 와 같다.

>>> from fractions import Fraction
>>> Fraction(1.1)
Fraction(2476979795053773, 2251799813685248)
>>> Fraction(1.1).limit_denominator()
Fraction(11, 10)
Fraction 을 산술 연산,관계 연산 및 기타 여러 가지 조작 에 사용 합 니 다.
위 에서 언급 한 바 와 같이 Fraction 류 는numbers.Rational류 를 계승 하고 이 모든 방법 을 실현 했다.그래서 Fraction 류 는 사실상 많은 특수 함 수 를 다시 불 러 와 서 그 실례 를 여러 산술 연산 에 직접 사용 할 수 있 게 한다.
산술 연산 뿐만 아니 라 Fraction 류 는 관계 연산,pickle 모듈,copy 모듈 과 해시 값 의 계산 도 지원 합 니 다.

>>> from fractions import Fraction
>>> x = Fraction(1, 2)
>>> y = Fraction(1, 3)
>>> x + y
Fraction(5, 6)
>>> x - y
Fraction(1, 6)
>>> x * y
Fraction(1, 6)
>>> x / y
Fraction(3, 2)
>>> x ** 2
Fraction(1, 4)
>>> -x
Fraction(-1, 2)
>>> abs(x)
Fraction(1, 2)
>>> round(x)
0
>>> import math
>>> math.floor(x)
0
>>> math.ceil(x)
1
>>> x == y
False
>>> x > y
True
기타 함수

fractions.Fraction.from_float(flt) 
fractions.Fraction.from_decimal(dec)
Python 3.2 이전에 Fraction 류 는 부동 소수점 과 Decimal 을 구조 방법 으로 전달 하 는 것 을 지원 하지 않 습 니 다.위의 두 가지 방법 을 제공 하여 클래스 방법 을 호출 하 는 방식 으로 인 스 턴 스 를 만 들 었 고 현재 버 전(Python 3.6.1)이라는 두 가지 방법 은 여전히 존재 합 니 다.

fractions.gcd(a, b)
최대 공약수 계산 에 사용 합 니 다.이 함 수 는 Python 3.5 이후 폐기 되 었 으 며,공식 적 으로 사용 을 권장 합 니 다math.gcd() .
총결산
정리 할 게 없어 서...Python 이 너무 편리 하 다 고 할 수 밖 에 없어 요.........................................................................하하,뒤에 있 는 이 표준 라 이브 러 리 학습 시 리 즈 는 계속 내 려 갈 거 야!
자,이상 이 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
참고 자료:
https://docs.python.org/3.6/library/fractions.html

좋은 웹페이지 즐겨찾기