파이썬 Decimal
은 밑에 10의 거듭 제곱으로 비율로 생각할 수있는 10 진수를 저장합니다.decimal.Decimal 객체가 왜 합리적인 것으로 간주되지 않습니까?
그럼 왜 실패할까요?
from decimal import Decimal
from numbers import Rational
assert issubclass(Decimal, Rational)
파이썬 Decimal
은 밑에 10의 거듭 제곱으로 비율로 생각할 수있는 10 진수를 저장합니다.decimal.Decimal 객체가 왜 합리적인 것으로 간주되지 않습니까?
그럼 왜 실패할까요?
from decimal import Decimal
from numbers import Rational
assert issubclass(Decimal, Rational)
같은 이유 float
은 Rational
되지 않습니다 : float
또는 Decimal
의 모든 비 무한, 비 NaN의 값이 합리적 반면, 유형은 실제 숫자 연산을 모델링하기위한 것입니다. 예를 들어, 그들은 제곱근을 지원합니다 :
2.0**0.5
Decimal(2).sqrt()
이성적인 숫자를 모델링하려는 클래스 또는 이성의 부분 집합은 그렇지 않습니다.
(예, 좋아, 당신이 2**0.5
을 할 수 있지만,이 플로트에 INT 강제 변환.) Decimal`이 Rational``의 서브 클래스가 아닌`때문에
맞습니다. 저의 실수는 "합리적인 숫자 저장"과 "합리적인 작업 만 지원"을 혼란스럽게합니다. – Eric
'assert'이 실패합니다. 왜 'Rational'의 하위 클래스가 아닌가하는 것이 다른 질문입니다. – DyZ
십진법 문서의 간단한 글에서 나는이 모듈이 내가 아는 한 분수만큼의 일주 반올림을 수행함을 알 수있다. –