2011-01-30 16 views
8

मैं अजगर में 1/2 कनवर्ट करना चाहते हैं कन्वर्ट इतनी है कि जब मैं कहता हूँ प्रिंट एक्स (जहां एक्स = 1/2) यह रिटर्न 0.5पायथन दशमलव में अंश

मैं ऐसा करने का सबसे बुनियादी तरीका रहा हूँ , किसी भी विभाजित कार्यों, लूप या मानचित्र का उपयोग किए बिना

मैंने फ्लोट (1/2) की कोशिश की है लेकिन मुझे 0 ... कोई मुझे बता सकता है कि इसे क्यों और कैसे ठीक किया जाए?

क्या यह चर x = 1/2 को संशोधित किए बिना ऐसा करना संभव है ??

धन्यवाद

+0

आप चर x संशोधित किए बिना 'द्वारा अधिक तुम क्या मतलब विस्तृत कर सकते हैं = 1/2'? – eat

+0

क्या यह एक चाल का विषय है जिसे आप ले रहे हैं? यदि ऐसा है, तो कृपया इसे [होमवर्क] के रूप में चिह्नित करें। –

उत्तर

23

पायथन 3.x में कोई भी विभाजन एक फ्लोट देता है;

>>> 1.0/2 
0.5 

या "भविष्य"

>>> from __future__ import division 
>>> 1/2 
0.5 

एक अतिरिक्त से विभाजन आयात करने के लिए:

>>> 1/2 
0.5 

कि प्राप्त करने के लिए अजगर 2.x में, आप नाव रूपांतरण के लिए मजबूर करने के लिए है: कोई अंतर्निहित अंश प्रकार नहीं है, लेकिन आधिकारिक पुस्तकालय में है:

>>> from fractions import Fraction 
>>> a = Fraction(1, 2) #or Fraction('1/2') 
>>> a 
Fraction(1, 2) 
>>> print a 
1/2 
>>> float(a) 
0.5 

और इतने पर ...

+4

सुधार - पायथन 3 में, '/' फ्लोट विभाजन करता है और '//' int विभाजन करता है; जहां Python2 में, तर्कों के आधार पर, '/' फ्लोट विभाजन हो सकता है (यदि कम से कम एक तर्क फ्लोट होता है) या int (यदि सभी तर्क int हैं) –

7

आप शायद पायथन 2. उपयोग कर रहे हैं आप विभाजन "ठीक" कर सकते हैं का उपयोग करके:

from __future__ import division 
अपनी स्क्रिप्ट के शुरू में

(किसी अन्य आयात से पहले)। डिफ़ॉल्ट रूप से पायथन 2 में, / ऑपरेटर पूर्णांक ऑपरेंड का उपयोग करते समय पूर्णांक विभाजन करता है, जो परिणाम के आंशिक हिस्सों को त्याग देता है।

इसे पायथन 3 में बदल दिया गया है ताकि / हमेशा फ़्लोटिंग पॉइंट डिवीजन हो। नया // ऑपरेटर पूर्णांक विभाजन करता है।

+0

मैं इसे एक फ़ंक्शन के अंदर नहीं डाल सकता .. यह मुझे एक त्रुटि दे रहा है कि फ़ाइल को फ़ाइल की शुरुआत में रखा जाना चाहिए .. – Kartik

+0

यह सही है।फ़्लोटिंग पॉइंट डिवीजन को मजबूर करने का एक और तरीका कम से कम एक फ्लोटिंग पॉइंट ऑपरेंड का उपयोग करना है। तो '1/2.0', या' 1/फ्लोट (2) 'आज़माएं। –

+0

मुझे इस तरह पता है लेकिन समस्या यह है कि मैं इनपुट को संशोधित नहीं कर सकता .. मैं x = '1/2' नहीं बदल सकता .. मैं जो भी कर सकता हूं वह 0.5 प्राप्त करने के लिए विभिन्न कार्यों को लागू कर सकता है .. क्या यह संभव है मार्ग? – Kartik

6

वैकल्पिक रूप से, आप दशमलव निर्दिष्ट करके या 1.0 से गुणा करके फ़्लोटिंग पॉइंट डिवीजन को मजबूर कर सकते हैं। उदाहरण (अजगर दुभाषिया अंदर से) के लिए:

>>> print 1/2 
0 
>>> print 1./2 
0.5 
>>> x = 1/2 
>>> print x 
0 
>>> x = 1./2 
>>> print x 
0.5 
>>> x = 1.0 * 1/2 
>>> print x 
0.5 

संपादित करें: ऐसा लगता है कि मैं समय यह मेरी प्रतिक्रिया :)

3

कोई मात्रा 1/2 कहीं भी है ऊपर टाइप करने के लिए ले लिया में पंच के लिए पीटा गया था। पाइथन एक अंतर्निहित प्रकार के साथ तर्कसंगत संख्याओं का प्रतिनिधित्व नहीं करता है - केवल पूर्णांक और फ़्लोटिंग-पॉइंट नंबर। 1 को 2 से विभाजित किया गया है - पूर्णांक विभाजन नियमों के बाद -0.

3

इनपुट एक स्ट्रिंग है, तो आप अंश सीधे इनपुट पर इस्तेमाल कर सकते हैं:

from fractions import Fraction 

x='1/2' 
x=Fraction(x) #change the type of x from string to Fraction 
x=float(x)  #change the type of x from Fraction to float 
print x 
संबंधित मुद्दे