2017-03-16 14 views
1

파이썬 Decimal은 밑에 10의 거듭 제곱으로 비율로 생각할 수있는 10 진수를 저장합니다.decimal.Decimal 객체가 왜 합리적인 것으로 간주되지 않습니까?

그럼 왜 실패할까요?

from decimal import Decimal 
from numbers import Rational 

assert issubclass(Decimal, Rational) 
+0

'assert'이 실패합니다. 왜 'Rational'의 하위 클래스가 아닌가하는 것이 다른 질문입니다. – DyZ

+0

십진법 문서의 간단한 글에서 나는이 모듈이 내가 아는 한 분수만큼의 일주 반올림을 수행함을 알 수있다. –

답변

2

같은 이유 floatRational되지 않습니다 : float 또는 Decimal의 모든 비 무한, 비 NaN의 값이 합리적 반면, 유형은 실제 숫자 연산을 모델링하기위한 것입니다. 예를 들어, 그들은 제곱근을 지원합니다 :

2.0**0.5 
Decimal(2).sqrt() 

이성적인 숫자를 모델링하려는 클래스 또는 이성의 부분 집합은 그렇지 않습니다.

(예, 좋아, 당신이 2**0.5을 할 수 있지만,이 플로트에 INT 강제 변환.) Decimal`이 Rational``의 서브 클래스가 아닌`때문에

+0

맞습니다. 저의 실수는 "합리적인 숫자 저장"과 "합리적인 작업 만 지원"을 혼란스럽게합니다. – Eric