2013-03-19 32 views
9

पाइथन में -103/100 == -2 लेकिन 103/100 == 1 क्यों है? मुझे समझ में नहीं आता क्यों।क्यों -103/100 == -2 लेकिन 103/100 == पायथन में 1?

+0

एकीकृत अनंतता की ओर इंटीजर विभाजन दौर। –

+0

क्या आप पूछ रहे हैं कि यह कैसे काम करता है, या इसे इस तरह से काम करने के लिए क्यों डिजाइन किया गया था? – abarnert

+0

@abarnert मुझे लगता है कि – frazras

उत्तर

22

इंटीजर डिवीजन हमेशा नीचे (नकारात्मक अनंतता की ओर) गोल करता है।

http://www.mathsisfun.com/numbers/images/round-up.gif

सादा या लंबे पूर्णांक विभाजन एक ही प्रकार के एक पूर्णांक पैदावार; नतीजा यह है कि गणितीय विभाजन के मंजिल फ़ंक्शन परिणाम पर लागू होता है।

http://docs.python.org/2/reference/expressions.html#binary-arithmetic-operations

 

यह पूर्णांक विभाजन और सापेक्ष के लिए अनुमति देता है (शेष, %) ऑपरेटरों अच्छी तरह से पहचान x == (x/y)*y + (x%y) के माध्यम से कनेक्ट करने के लिए।

 

  मंजिल (एक्स) सबसे बड़ा पूर्णांक नहीं से अधिक एक्स है।

+0

'(// // b) * b + a% b == a' पर एक नोट जोड़ने लायक हो सकता है। – abarnert

+0

(+1) तस्वीर अद्भुत है। जहां तक ​​शब्द का संबंध है, मुझे "राउंड डाउन" की वरीयता में "ऋणात्मक अनंतता की ओर राउंड" कहने के लिए यह कम अस्पष्ट लगता है। – NPE

+0

[विकिपीडिया] (http: //en.wikipedia।संगठन/विकी/मॉडुलो_ऑपरेशन # Remainder_calculation_for_the_modulo_operation) वास्तव में एक बहुत अच्छी व्याख्या है कि क्यों अधिकांश भाषाएं (सी 9 0 एक उल्लेखनीय अपवाद है) या तो विभाजन और लाभांश-चिह्न मॉड्यूलो, या फर्श डिवीजन और डिवीजर-साइन मॉड्यूल को छोटा कर दिया गया है। या तो एक उचित है (हमेशा एक सकारात्मक विकल्प है, हमेशा सकारात्मक पॉड्यूलस के साथ), लेकिन जिस तरह से पायथन चुना गया है वह दोनों सिद्धांत सिद्धांत और व्यावहारिक अंकगणितीय में अधिक आम है। – abarnert

1

इंटीजर डिवीजन लेता है (मुझे विश्वास है) जो भी फ्लोट बाहर आता है, उतना ही कम या कम।

तो यह पहला विभाजन के लिए -2 और दूसरे के लिए 1 है।

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