विचित्र रूप से, पाइथन के गणित मॉड्यूल से प्रत्येक कार्य दशमलव वस्तुओं के साथ ठीक काम करता प्रतीत होता है। उदाहरण के लिए: frexp, exp, cos।पायथन: गणित मॉड्यूल में फ़ंक्शंस दशमलव वस्तुओं को तर्क के रूप में क्यों स्वीकार करते हैं?
जब मैं print(math.frexp(decimal.Decimal('2341.12412')))
टाइप करता हूं, तो पायथन सही उत्तर प्रिंट करता है, जो (0.57156... , 12)
है, और कोई अपवाद नहीं फेंकता है।
मुझे लगता है कि गणित मॉड्यूल निम्न स्तर के सी में लिखा जाएगा, जो दक्षता के लिए हार्डवेयर गणित संचालन पर जितना संभव हो उतना निर्भर करता है। तो ... यह दशमलव वस्तुओं के लिए क्यों काम करेगा?
क्या उन्होंने गणित कार्यों में एक प्रकार की जांच डाली, और यदि तर्क एक दशमलव है तो एक अलग कार्यान्वयन पर स्विच करें? मैंने दस्तावेज़ों में उल्लिखित कुछ भी नहीं देखा। यह भी हो सकता है कि दशमलव को स्वचालित रूप से एक फ्लोट में परिवर्तित किया जा रहा है, लेकिन इससे कोई अर्थ नहीं आता है।
हाँ, मैं उलझन में हूं।
Presuambly, वे तैरने में परिवर्तित हो रहे हैं। – Antimony
'दशमलव' ऑब्जेक्ट के कार्यों को बढ़ाएं और देखें कि जब आप इसे पास करते हैं तो उस पर क्या कहा जा रहा है। –
मैंने अभी अभी कोशिश की है। मैंने दशमलव वर्ग को बढ़ाया और एक संदेश मुद्रित करने के लिए \ _ \ _ add__ और \ _ \ _ multiply__ फ़ंक्शंस को ओवरराइड किया और बराबर दशमलव कार्य को कॉल किया। अब तक, ऐसा लगता है कि गणित कार्यों में से कोई भी \ _ \ _ add__ या \ _ \ _ multiply__ को कॉल नहीं कर रहा है, क्योंकि जब मैं उन्हें कॉल करता हूं तो संदेशों को प्रिंट नहीं किया जाता है (एक्सपी, frexp, आदि)। शायद दशमलव को एक फ्लोट में परिवर्तित किया जा रहा है ... –