दिलचस्प पोस्ट
कर्ल त्रुटि 60, SSL प्रमाणपत्र जारी: प्रमाण पत्र श्रृंखला में स्वयं हस्ताक्षरित प्रमाणपत्र डेटा बाइंडिंग का उपयोग कर फ़िल्टर मान सेट करना संभव नहीं है? NSDocumentDirectory को तेजी से कैसे खोजें? परिवर्तन और क्लिक करें घटना के चेकबॉक्स के बीच jQuery के अंतर वसंत के बीच अंतर @ नियंत्रक और @ आरक्षित नियंत्रक एनोटेशन आप जावा एप्लेट्स कैसे डिबग करते हैं? रूबी फ़्लोटिंग बिंदु त्रुटियाँ एंड्रॉइड में एईएस का उपयोग कर एसडी कार्ड से फाइल कैसे एन्क्रिप्ट करनी है? जावा के लिए सीएसवी एपीआई वेबब्राउज़र पूर्ण पृष्ठ लोड हो रहा है एक url के कनेक्शन को प्रतिबंधित करने के लिए socket.io मूल सेट कैसे करें Int बनाम फर्श पर कास्ट करें एंड्रॉइड 2.3.1 में ओवरस स्क्रॉल रंग कैसे बदला जा सकता है? अवैध क्रॉस-थ्रेड एक्सेस समस्या XMPPFramework – कैसे एक एमयूसी कमरा बनाने और उपयोगकर्ताओं को आमंत्रित करें?

उद्देश्य-सी में फ्लोट्स के साथ परेशानी

मुझे एक छोटी सी समस्या है और मुझे कोई हल नहीं मिल रहा है!

मेरा कोड है (यह केवल एक नमूना कोड है, लेकिन मेरा मूल कोड ऐसा कुछ करता है):

float x = [@"2.45" floatValue]; for(int i=0; i<100; i++) x += 0.22; NSLog(@"%f", x); 

उत्पादन 52.450001 है और 52.450000 नहीं है!

मुझे नहीं पता क्योंकि ऐसा होता है!

किसी भी मदद के लिए धन्यवाद!

~ हल ~

सभी को धन्यवाद! हां, मैंने डबल प्रकार के साथ हल किया है!

Solutions Collecting From Web of "उद्देश्य-सी में फ्लोट्स के साथ परेशानी"

फ़्लोट्स एक निश्चित परिशुद्धता के साथ संख्या प्रतिनिधित्व हैं इस प्रारूप में प्रत्येक मूल्य का प्रतिनिधित्व नहीं किया जा सकता है। यहाँ भी देखें

आप आसानी से सोच सकते हैं कि ऐसा क्यों होता है: अंतराल (1..1) में संख्या की एक असीमित संख्या है, लेकिन एक फ्लोट में केवल सभी संख्याओं का प्रतिनिधित्व करने के लिए सीमित मात्रा में बिट्स हैं (-एमएक्सफ्लैट .. MAXFLOAT)।

अधिक उपयुक्त तरीके से: 32bit पूर्णांक प्रतिनिधित्व में एक प्रतिनिधित्व करने वाले पूर्णांक संख्याएं हैं, लेकिन वास्तविक मूल्यों की असीम असंख्य संख्याएं हैं जो 32 या 64 बिट के सीमित प्रतिनिधित्व में पूरी तरह से प्रदर्शित नहीं की जा सकतीं। इसलिए केवल उच्चतम और सबसे कम प्रतिनिधित्व योग्य वास्तविक मूल्य की सीमा नहीं है, बल्कि सटीकता के लिए भी।

तो अस्थायी बिंदु प्रभावित होने के बाद संख्या में कुछ अंक क्यों होते हैं? क्योंकि प्रतिनिधित्व दशमलव के बजाय एक द्विआधारी प्रणाली पर आधारित होता है, जिससे अन्य संख्याओं को आसानी से प्रदर्शित किया जाता है, दशमलव दशकों में।

फ़्लोटिंग पॉइंट नंबर हमेशा कंप्यूटर द्वारा आसानी से प्रदर्शित नहीं हो सकते इससे कुछ अंकों में अशुद्धि होती है।

यह मुझसे पूछ रहा है जैसे कि दशमलव में दशमलव 1/3 है। कोई फर्क नहीं पड़ता कि आप कितना मुश्किल प्रयास करते हैं, आप मुझे यह बता नहीं पाएंगे कि यह क्या है क्योंकि दशमलव उस नंबर का सटीक वर्णन नहीं कर सकता है।

फ़्लोट्स कुछ दशमलव संख्याओं का सटीक वर्णन नहीं कर सकते हैं।