आम तौर पर, किसी व्यंजक का डेटा प्रकार तर्कों के प्रकारों पर निर्भर करता है। यह नियम अधिकांश ऑपरेटरों पर लागू होता है:जैसे जब हम दो पूर्णांक जोड़ते हैं, तो परिणाम एक पूर्णांक होना चाहिए। हालाँकि, विभाजन के मामले में यह अच्छी तरह से काम नहीं करता है क्योंकि दो अलग-अलग अपेक्षाएँ हैं। कभी-कभी हम विभाजन से सटीक फ़्लोटिंग पॉइंट संख्या उत्पन्न करने की अपेक्षा करते हैं और दूसरी बार हम एक पूर्णांकित पूर्णांक परिणाम चाहते हैं।
सामान्य तौर पर, विभाजन (/) की पायथन परिभाषा पूरी तरह से तर्कों पर निर्भर करती है। उदाहरण के लिए अजगर 2.7 में, 20/7 को विभाजित करना 2 था क्योंकि दोनों तर्क जहां पूर्णांक हैं। हालांकि, 20./7 आउटपुट के रूप में 2.857142857142857 उत्पन्न करेगा क्योंकि तर्क फ्लोटिंग पॉइंट नंबर थे।
'/' की उपरोक्त परिभाषा अक्सर उन अनुप्रयोगों के लिए समस्याएँ पैदा करती है जहाँ डेटा प्रकारों का उपयोग किया गया था जिसकी लेखक को उम्मीद नहीं थी।
तापमान को सेल्सियस से फ़ारेनहाइट में परिवर्तित करने के एक सरल कार्यक्रम पर विचार करें, इनपुट के आधार पर दो अलग-अलग परिणाम उत्पन्न होंगे। यदि एक उपयोगकर्ता पूर्णांक तर्क (18) और दूसरा फ़्लोटिंग पॉइंट तर्क (18.0) प्रदान करता है, तो उत्तर पूरी तरह से अलग थे, भले ही सभी इनपुट में समान संख्यात्मक मान थे।
#Conversion of celcius to Fahrendheit in python 2.6 >>> print 18*9/5 + 32 64 >>> print 18.0*9/5 + 32 64.4 >>> 18 == 18.0 True
ऊपर से हम देख सकते हैं, जब हम 18.0 पास करते हैं, तो हमें सही आउटपुट मिलता है और जब हम 18 पास करते हैं, तो हमें गलत आउटपुट मिल रहा है। यह व्यवहार इसलिए है क्योंकि अजगर 2.x में, "/" ऑपरेटर सभी तर्कों के पूर्णांक होने की स्थिति में फर्श विभाजन के रूप में काम करता है। हालांकि, अगर तर्कों में से एक फ्लोट वैल्यू है तो "/" ऑपरेटर एक फ्लोट वैल्यू देता है।
एक स्पष्ट रूपांतरण फ़ंक्शन (जैसे फ्लोट (x)) इसे रोकने में मदद कर सकता है। हालांकि, विचार यह है कि अप्रत्याशित डेटा प्रकार के दुर्लभ मामले को कवर करने के लिए रूपांतरणों की घनी अव्यवस्था के बिना, अजगर सरल और विरल भाषा हो। पायथन 2.2 संस्करण के साथ शुरू, एक नया डिवीजन ऑपरेटर जोड़ा गया था जो स्पष्ट करने के लिए अपेक्षित था। भविष्य में सामान्य / ऑपरेटर फ्लोटिंग-पॉइंट परिणाम लौटाएगा। एक विशेष डिवीजन ऑपरेटर, //, राउंड-डाउन परिणाम लौटाएगा।
>>> # Python 2.7 program to demonstrate the use of "//" for both integers and floating point number >>> print 9//2 4 >>> print -9//2 -5 >>> print 9.0//2 4.0 >>> print -9.0//2 -5.0
पायथन 3.x में डिवीजन ऑपरेशन
पायथन 3.x में, ऊपर उल्लिखित दोषों को हटा दिया गया था और '/' ऑपरेटर पूर्णांक और फ़्लोटिंग पॉइंट तर्क दोनों के लिए फ़्लोटिंग पॉइंट डिवीजन करता है।
>>> #Conversion of celcius to Fahrendheit in python 3.x >>> #Passing 18 (integer) >>> print (18*9/5 + 32) 64.4 >>> #Passing 18.0(float) >>> print(18.0*9/5 + 32) 64.4
साथ ही जब हम +ve या –ve तर्क पास करते हैं तो कोई फर्क नहीं पड़ता।
>>> print(9/2) 4.5 >>> print(-9/2) -4.5 >>> print(9.0/2) 4.5 >>> print(-9.0/2) -4.5