दिलचस्प पोस्ट
WPF से मुद्रण / रिपोर्टिंग के लिए सबसे अच्छा तरीका क्या है? सी # में एक सार वर्ग के कन्स्ट्रक्टर टॉमकेट अनुरोध समयबाह्य सी # का प्रयोग करके यूआरएल से छवि कैसे डाउनलोड करें नक्शा टुकड़ा एपीआई v2 लेआउट के शीर्ष पर बटन कैसे जोड़ें एकाधिक रेडिस डाटाबेस का क्या मतलब है? डेल्फी क्या "कीवर्ड" के साथ एक खराब अभ्यास है? linq केस बयान कैसे लिनक्स सर्वर में MySQL तालिका नाम बदलने के लिए केस असंवेदनशील हो सकता है? क्या C ++ std :: सेट धागा-सुरक्षित है? UIWebView iOS5 बदलते हुए उपयोगकर्ता-एजेंट 'WebForm_DoPostBackWithOptions' IE11 पूर्वावलोकन में अनिर्धारित है jQuery के चयनित रेडियो बटन का मूल्य मिलता है डॉक्सीजन धीमी है सी – क्रमबद्धता तकनीक

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

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

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

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

Solutions Collecting From Web of "पायथन फ्लोट – स्ट्रॉफ फ्लोट विचित्रता"

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