दिलचस्प पोस्ट
पाठ इनपुट क्षेत्र में कर्सर स्थिति (वर्णों में) प्राप्त करें MySQL: समूह फ़ंक्शन का अमान्य उपयोग सभी एसडीके लाइसेंसों को स्वचालित रूप से स्वीकार करें कैसे जावा में सिंक्रनाइज़ काम करता है एंड्रॉइड 5 लॉलीपॉप में सूचना बार आइकन सफेद हो जाता है वेबएपीआई 2 में सीओआरएस प्रमाणीकरण कैसे करें? SQLite तालिका से स्तंभ हटाएं IE8 में console.log का क्या हुआ? jquery रोक बच्चे ट्रिगर माता पिता घटना मैं जावास्क्रिप्ट के साथ फाइल एक्सटेंशन कैसे प्राप्त करूं? मेमोरी रिसाव का पता लगाने के उपकरण कैसे सीएसएस केवल ओपेरा के लिए दृश्यमान बनाने के लिए कैसे बाइट सरणी में छवि को परिवर्तित करें बहिष्कृत-आकार के लिए विस्थापन के लिए प्रतिस्थापन: विवश करने के लिए: रेखारेखामोड: आईओएस 7 में? JSF पृष्ठ में एक EL वैरिएबल को परिभाषित करना और पुनः उपयोग करना

पायथन फ्लोट – स्ट्रॉफ फ्लोट विचित्रता

>>> float(str(0.65000000000000002)) 0.65000000000000002 >>> float(str(0.47000000000000003)) 0.46999999999999997 ??? 

यहाँ क्या हो रहा है? मैं स्ट्रिंग के लिए 0.47000000000000003 को कैसे 0.47000000000000003 और परिणामस्वरूप वापस फ्लोट करने के लिए मान?

मैं विंडोज पर पायथन 2.5.4 का इस्तेमाल कर रहा हूँ।

वेब के समाधान से एकत्रित समाधान "पायथन फ्लोट – स्ट्रॉफ फ्लोट विचित्रता"

str(0.47000000000000003) '0.47' और float('0.47') 0.46999999999999997 हो सकता है। यह जिस तरह से चल बिन्दु संख्या का प्रतिनिधित्व करता है (इस विकिपीडिया लेख को देखें) के कारण है

नोट: float(repr(0.47000000000000003)) या eval(repr(0.47000000000000003)) आपको अपेक्षित परिणाम देगा, लेकिन आपको परिशुद्धता की आवश्यकता होने पर दशमलव का उपयोग करना चाहिए।

फ्लोट (और डबल) में अनंत सटीक नहीं है स्वाभाविक रूप से, गोल त्रुटियां तब होती हैं जब आप उन पर काम करते हैं।

यह एक पायथन एफक्यूएफ़ है

समान प्रश्न काफी comp.lang.python में भी नियमित रूप से आता है।

मुझे लगता है कि यह एक सामान्य प्रश्न है क्योंकि अजथन अन्य सभी मामलों में एकदम सही है ;-), हम इसे पूरी तरह से अंकगणित करने की अपेक्षा करते हैं – ठीक उसी तरह जैसे हमें स्कूल में सिखाया गया था। हालांकि, जैसा कि कोई भी संख्यात्मक तरीके कोर्स कर चुका है वह आपको बताएगा, फ़्लोटिंग प्वाइंट नंबर सही से बहुत लंबा रास्ता है।

दशमलव एक अच्छा विकल्प है और यदि आप अधिक गति और अधिक विकल्प चाहते हैं तो जीएमआई बहुत अच्छा है।

इस उदाहरण के द्वारा मुझे लगता है कि जब आप पाइथन में डालते हैं तो यह एक त्रुटि है

  >>> print(int(((48/5.0)-9)*5)) 2 

आसान तरीका है, मैं इस समस्या को इस द्वारा हल करता हूं

  >>> print(int(round(((48/5.0)-9)*5,2))) 3