/ / ये ऑपरेशन 0.0 क्यों लौटाता है? [डुप्लिकेट] - अजगर, अजगर -२.,, गणित

ये ऑपरेशन 0.0 क्यों लौटते हैं? [डुप्लिकेट] - पायथन, पायथन-2.7, गणित

मेरा सवाल यह है कि क्यों,

import math
a = math.sqrt(3)
area = a * (1 / 2)
print area

0.0 का आउटपुट दें, लेकिन,

import math
a = math.sqrt(3)
area = a / 2
print area

0.866025403784 का आउटपुट दें

उत्तर:

उत्तर № 1 के लिए -1

मुझे लगता है कि आप अजगर 2 का उपयोग कर रहे हैं।7 यह समस्या है अजगर 2.7 के साथ यह 1/2 के रूप में मूल्यांकन करता है क्योंकि यह 1 और& 2 को पूर्णांक के रूप में समझता है इसलिए यह पूर्णांक के रूप में परिणाम देता है लेकिन दूसरे मामले में आपका math.sqrt () फ़ंक्शन दोहरा मान लौटाता है जिससे यह दोहरा परिणाम देता है। लेकिन अगर आप अजगर 3.0 का उपयोग करते हैं, तो समस्या यह है कि आप दोनों मामलों में एक ही परिणाम प्राप्त कर सकते हैं, आप कोशिश कर सकते हैं कि यह 1/2 को 0.5 के रूप में देता है।


उत्तर № 2 के लिए -1

दरअसल यह 2.X में पूर्णांक कटाव की समस्या है।

एक्स / वाई क्लासिक और सच्चा विभाजन। पायथन 2.X में, यह ऑपरेटर प्रदर्शन करता है क्लासिक विभाजन, पूर्णांकों के लिए, और रखने के परिणाम को छोटा कर रहे हैंफ्लोइंग-पॉइंट संख्याओं के लिए अवशेष (यानी, आंशिक भाग)। 2.X में, / a क्लासिक डिवीजन करता है, यदि पूर्णांक दोनों पूर्णांक और फ्लोट डिवीजन (शेष रहता है) अन्यथा अन्यथा पूर्णांक विभाजन विभाजन को प्रदर्शित करता है।

पायथन 3. एक्स में, यह प्रदर्शन करता है सच्चा विभाजन, हमेशा फ्लोइंग-पॉइंट में रहता हैपरिणाम, प्रकार की परवाह किए बिना। 3.X में, / अब हमेशा सही विभाजन करता है, एक फ्लोट परिणाम लौटाता है जिसमें ऑपरेंड प्रकारों की परवाह किए बिना कोई भी शेष शामिल होता है।

पायथन 2.X में आप इसे जोड़कर इसे "ठीक" कर सकते हैं __future__ आयात प्रभाग से अपनी स्क्रिप्ट के लिए। पूर्णांक विभाजन के लिए / ऑपरेटर और उपयोग // का उपयोग करते समय यह हमेशा एक फ्लोट डिवीजन करेगा।

पर तुम कर सकते हो कम से कम एक ऑपरेंड बनाएं विभाजन में एक फ्लोट है, आपको "एक फ्लोट परिणाम मिलेगा।

>>> from __future__ import division

क्षेत्र = एक * (1/2) क्षेत्र 0.8660254037844386

उम्मीद है इससे आपको मदद मिलेगी।