Bizzarely, 파이썬의 수학 모듈의 모든 함수는 Decimal 객체에서 잘 작동하는 것 같습니다. 예 : frexp, exp, cos.Python : 수학 모듈의 함수가 Decimal 객체를 인수로 사용하는 이유는 무엇입니까?
print(math.frexp(decimal.Decimal('2341.12412')))
을 입력하면 파이썬은 정답 인 (0.57156... , 12)
을 인쇄하고 예외를 throw하지 않습니다.
수학 모듈은 저수준 C로 작성되어 하드웨어 연산 작업에 가능한 한 많이 의존한다고 가정합니다. 그래서 ... 왜 Decimal 객체에서 작동합니까?
수학 함수에 형식 검사를했는지, 인수가 10 진수 일 경우 다른 구현으로 전환 했습니까? 나는 문서에서 언급 한 것과 같은 것을 보지 못했습니다. 또한 Decimal이 자동으로 float로 변환 될 수도 있지만 의미가 없습니다.
예, 혼란 스럽습니다.
,
exp
에 대한 Presuambly, 그들은 부유물로 변환됩니다. – Antimony'Decimal' 객체의 함수를 확장하여 전달할 때 호출되는 객체를 확인하십시오. –
이제 막 시도했습니다. Decimal 클래스를 확장하고 \ _ \ _ add__ 및 \ _ \ _ multiply__ 함수를 오버라이드하여 메시지를 인쇄하고 동등한 Decimal 함수를 호출했습니다. 지금까지는 수학 함수가 \ _ \ _ add__ 또는 \ _ \ _ multiply__를 호출하지 않는 것 같습니다. 메시지를 호출 할 때 (exp, frexp 등) 인쇄하지 않기 때문입니다. 아마도 소수점이 부동 소수점으로 변환 될 것입니다 ... –