2009-11-24 19 views
8

पर विचार करें:यह विभाजन पायथन में क्यों नहीं काम करता है?

>>> numerator = 29 
>>> denom = 1009 
>>> print str(float(numerator/denom)) 
0.0 

मैं इसे कैसे एक दशमलव वापसी कर सकता हूँ?

+1

कुछ हद तक एक तरफ, लेकिन 'फ्लोट' पायथन मानक पुस्तकालय में 'दशमलव' प्रकार के समान नहीं है। जब आप कहते हैं, "मैं बस इसे एक दशमलव वापस करना चाहता हूं" जिसका आप वास्तव में मतलब है "मैं बस इसे दशमलव नोटेशन में एक आंशिक मान का प्रतिनिधित्व करने वाली स्ट्रिंग को वापस करना चाहता हूं", है ना? –

उत्तर

24

संस्करण 3 तक, पायथन के डिवीजन ऑपरेटर, /, दो पूर्णांक तर्कों के साथ प्रस्तुत किए जाने पर सी के डिवीजन ऑपरेटर की तरह व्यवहार करते हैं: यह एक पूर्णांक परिणाम देता है जो एक अंशकालिक भाग होने पर छोटा हो जाता है। देखें: PEP 238

>>> n = 29 
>>> d = 1009 
>>> print str(float(n)/d) 
0.0287413280476 

अजगर 2 में (और शायद पहले) आप इस्तेमाल कर सकते हैं:

>>> from __future__ import division 
>>> n/d 
0.028741328047571853 
+0

-7 // 3 = -3 (शेष = 2) पायथन में और -7/3 = -2 (शेष = -1) सी/सी ++ में है, इसलिए मैं यह नहीं कहूंगा कि यह व्यवहार पाइथन में सी जैसा ही है/सी ++ – Artur

7

पायथन 2.x में, विभाजन काम करता है जैसे कि यह सी जैसी भाषाओं में करता है: दोनों अगर तर्क पूर्णांक होते हैं, परिणाम एक पूर्णांक के लिए छोटा कर दिया जाता है, इसलिए 29/1009 0. 0 फ्लोट के रूप में 0 है। इसे ठीक करने के लिए, विभाजित करने से पहले एक नाव के लिए डाली:

print str(float(numerator)/denominator) 

अजगर 3.x में, विभाजन और अधिक स्वाभाविक रूप से कार्य करता है, ताकि आप सही गणितीय परिणाम (फ्लोटिंग प्वाइंट त्रुटि के भीतर) प्राप्त होंगे।

0
print str(float(numerator)/float(denom)) 
+0

ऑपरेटरों में से किसी एक को फ्लोट करने के लिए पर्याप्त है()। मैं आमतौर पर संख्यात्मक को कास्टिंग करने की अनुशंसा करता हूं क्योंकि यह अभिव्यक्ति की शुरुआत में कलाकारों को ढूंढता है जहां पाठक आमतौर पर इसे अधिक आसानी से देखते हैं। –

+0

हां यह है, लेकिन यह मेरे लिए अधिक "उचित" लग रहा था क्योंकि यह इसकी कास्टिंग में अधिक पारदर्शी था। लेकिन हाँ, अकेले कास्टिंग पर्याप्त है। – inspectorG4dget

1

आपके मूल्यांकन में आप परिणाम कास्टिंग कर रहे हैं, आपको ऑपरेंड को बजाय डालना होगा।

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