float
, ठीक है, एक C ++ फ्लोटिंग पॉइंट है। FFloat32
एक ऐसी संरचना है जो फ्लोट के साथ-साथ (एक यूनियन के माध्यम से) उस फ्लोट के संकेत, मंटिसा और एक्सपोनेंट भागों के विघटित बिटफ़िल्ड का प्रतिनिधित्व करती है।
आपको आम तौर पर कभी नहीं करना चाहिए का उपयोग करें FFloat32
जब छोड़कर:
- आप कुछ एपीआई का उपयोग कर रहे हैं जो उम्मीद
FFloat32
करते हैं कि (ये बहुत दुर्लभ हैं) या
- आपको फ्लोटिंग पॉइंट वैल्यू के साथ निम्न स्तर की बिट हैकरी करने की आवश्यकता है (इन दिनों भी काफी दुर्लभ)
ऐसा नहीं FFloat32
है बुरा , दर असल, यह सिर्फ है कि यह वास्तव में आप कुछ भी आप सामान्य प्रयोजन चल बिन्दु के उपयोग के लिए आवश्यकता होगी प्रदान नहीं करता है।
यह एक सादे पुराने की तुलना में कम आम है float
, जिसका कुछ मामूली पठनीयता प्रभाव है (अन्य लोगों को तुरंत पता नहीं चल सकता है कि यह एक नज़र में क्या है)। यह भी अंतर्निहित रूप से परिवर्तित नहीं होता हैfloat
इसलिए आप something.FloatValue
बहुत कुछ लिख रहे हैं , जो कि एक बड़ी बात नहीं है, लेकिन थकाऊ हो सकता है।
अंत में, यूनियनों और बिटफिल्ड्स का इसका उपयोग गैर-पोर्टेबल और कार्यान्वयन-परिभाषित (नीचे देखें) है। यह नहीं है आपकी समस्या है, यह सुनिश्चित करने के लिए एपिक का काम है कि प्रकार को संरचित किया जाए ताकि यह सभी समर्थित कार्यान्वयनों के लिए उपयोग करने योग्य हो, लेकिन यह बग का एक संभावित स्रोत है यदि वे नए कंपाइलर के प्रकार के कार्यान्वयन के साथ किसी मुद्दे को पकड़ने में विफल रहते हैं। संस्करण जारी किया गया है या समर्थित संकलक की सूची में जोड़ा गया है।
इसलिए जब तक आपको फ्लोटिंग पॉइंट प्रतिनिधित्व में व्यक्तिगत बिट्स के साथ खेलने की आवश्यकता नहीं है, आपको शायद बस से बचना चाहिए FFloat32
(इसके चचेरे भाई, से FFloat16
थोड़ा अधिक उपयोगिता हो सकती है क्योंकि कोई मानक 16-बिट सी ++ फ्लोटिंग पॉइंट प्रकार नहीं है)।
यह " गति " के लिए अपने घटकों के पूर्णांक अभ्यावेदन के माध्यम से फ़्लोट्स में हेरफेर करने के लिए सामान्य होता था । आधुनिक कंप्यूटर बहुत से प्लेटफ़ॉर्मों और विभिन्न प्रकारों के लिए आवश्यक हैं इस प्रकार की चीज़ों को करने के लिए इस्तेमाल की जा सकने तकनीकें वास्तव में किसी भी घटना में प्रदर्शन या शुद्धता के लिए हानिकारक हो सकती हैं।
यह बताना चाहिए कि अवास्तविक की गिटहब रिपॉजिटरी की खोज से इस FFloat32
प्रकार के बहुत कम उपयोगों का पता चलता है । वे सभी FFloat32
स्वयं की परिभाषा में या की परिभाषा में हैं FFloat16
।
विशेष रूप से, FFloat32
दो चीजें करता है जिन्हें C ++ मानक कहता है। यह:
- आपको ऐसा कार्य करने की अनुमति देता है जैसे कि एक समय में संघ के एक से अधिक सदस्य सक्रिय हों; आपसे फ़्लोटिंग पॉइंट सदस्यों को लिखने और पूर्णांक सदस्यों में से एक से पढ़ने की उम्मीद है (9.5.1, [class.union))
- एक IEEE फ़्लोटिंग पॉइंट मान के बिट आवंटन के मिलान के लिए यूनियन के भीतर बिटफील्ड आवंटन की अपेक्षा करता है; हालाँकि, एक वर्ग प्रकार के भीतर बिटफील्ड के सदस्यों का आवंटन और संरेखण कार्यान्वयन परिभाषित है (9.6.1, [class.bit])
FFloat32
।