2014-11-04 18 views
9

मैं प्रोग्रामिंग और पायथन में शुरुआत कर रहा हूं। मैं कुछ सरल गणित संचालन कर रहा हूं। इसलिए पाइथन दुभाषिया में 3/2 हमें पता है कि 1 देता है। लेकिन -3/2-2 देता है। क्या आप यहां अंतर बता सकते हैं?3/2 और -3/2 के बीच क्या अंतर है?

+4

'3/2' -> 1.5, नीचे 1 '-3/2' -> -1.5, गोलाकार -2 तक गोल किया गया। –

+0

पाइथन नकारात्मक अनंतता की ओर बढ़ने के स्पष्टीकरण के लिए http://stackoverflow.com/a/19518866/190597 भी देखें। – unutbu

उत्तर

5

अजगर 2 में, / पूर्णांक विभाजन प्रदर्शन करती है। इसका अर्थ यह है कि परिणाम, यदि यह पूर्णांक नहीं है, तो अगले पूर्णांक मान पर को गोलाकार कर दिया गया है। जब मान नकारात्मक होता है, तो यह स्वाभाविक रूप से एक बड़े-आयाम ऋणात्मक संख्या के लिए गोल होता है।

सहजता से, पूर्णांक विभाजन का परिणाम फ्लोट विभाजन के परिणामस्वरूप mathematical floor है। इस कारण से, पूर्णांक विभाजन को आमतौर पर floor division के रूप में भी जाना जाता है।

floor(1.5) # Returns 1.0 
floor(-1.5) # Returns -2.0 

यह अपने मॉड्यूल के शीर्ष पर from __future__ import division डालकर अजगर 2 में इस व्यवहार को बदलने के लिए संभव है। यह आयात / ऑपरेटर केवल सच्चा विभाजन (फ्लोट डिवीजन) इंगित करेगा, और // ऑपरेटर के साथ स्पष्ट मंजिल विभाजन (पूर्णांक विभाजन) को सक्षम करेगा। इन सम्मेलनों पायथन 3. में मानक हैं

from __future__ import division 

print(3/2) # 1.5 
print(3//2) # 1 

टिप्पणी में नोट @Dunes रूप में, यह -/ तुलना में एक उच्च पूर्वता है, और इसलिए -3/2(-3)/2 बजाय -(3/2) के बराबर है कि ध्यान देने योग्य है। यदि विभाजन पहले लागू किया गया था, तो परिणाम वास्तव में -1 होगा।

+0

मुझे लगता है कि राउंडिंग डाउन को आम तौर पर 'फ्लोर' +1 कहा जाता है, जो इसे बेहतर तरीके से समझाता है –

+0

यह ध्यान देने योग्य है कि '-' यूनरी ऑपरेटर है और डिवीजन ऑपरेटर से अधिक कसकर बांधता है। यदि यह चारों ओर एक और तरीका था तो परिणाम वही होंगे। – Dunes

+0

पायथन 3.4.2 में, 'int (-1.5)' रिटर्न '-1'। –

4
-3/2 == -1.5 , floor(-1.5) = -2 

वैसे ही

3/2 == 1.5 , floor(1.5) = 1 
1

पायथन के दो डिवीजन ऑपरेटर हैं।

  1. /

  2. //

यहाँ, // हमेशा निकटतम पूर्णांक (भले ही ऑपरेंड के प्रकार के) के लिए परिणाम दौर। इसे फर्श डिवीजन कहा जाता है। लेकिन / निकटतम पूर्णांक तक चलेगा, यदि दोनों ऑपरेंड पूर्णांक हैं, तो यह वास्तविक विभाजन करता है यदि ऑपरेटरों में से कोई भी एक फ्लोट है।

अंतर स्पष्ट रूप से इस उदाहरण से समझा जा सकता है,

>>> 11/4 
2 
>>> 11.0/4 
2.75 
>>> 11//4 
2 
>>> 11.0//4.0 
2.0 

Python Documentation on floor division से हवाला देते हुए,

गणितीय विभाजन कि निकटतम पूर्णांक करने के लिए नीचे दौर। फर्श डिवीजन ऑपरेटर // है।उदाहरण के लिए, अभिव्यक्ति 11 // 42 पर 2.7 5 के विपरीत फ्लोट सच्चे डिवीजन द्वारा लौटाई गई है। ध्यान दें कि (-11) // 4-3 है क्योंकि -2.75 नीचे है। PEP 238 देखें।

उद्धृत पाठ में अंतिम पंक्ति आपके वास्तविक प्रश्न का उत्तर होगी।

+0

निकटतम पूर्णांक में फ़्लोर विभाजन और गोलाकार दो गैर समकक्ष अवधारणाएं हैं। पायथन 3.4.2 में, '5 // 3' 1 उत्पन्न करेगा, और 'राउंड (5/3)' उपज करेगा 2.' // 'ऑपरेटर हमेशा नकारात्मक अनंतता की ओर बढ़ेगा। –

संबंधित मुद्दे