एक एक्सएनए गेम पर काम करना, मैं अपने अधिकांश मूल्य मानों के लिए फ्लोट का उपयोग कर रहा हूं। अधिकांश सी # फ़ंक्शन इनपुट/आउटपुट युगल प्रतीत होते हैं, इसलिए मैं बहुत कुछ लिख रहा हूं (फ्लोट)। क्या मुझे सिर्फ डबल्स का उपयोग करना चाहिए या मैं ठीक से कैसे काम कर रहा हूं?सी # में हर जगह कास्टिंग (फ्लोट)। क्या यह सिर्फ युगल में काम करना बेहतर है?
उत्तर
आपको युगल का उपयोग करना चाहिए। वे एकल परिशुद्धता फ्लोट से अधिक सटीक हैं और कास्टिंग के लिए एक ओवरहेड होगा।
सामान्य रूप से अच्छी सलाह है, लेकिन एक्सएनए स्वयं ही 'फ्लोट' पसंद करते हैं (देखें, के लिए उदाहरण, 'MathHelper' वर्ग)। सुनिश्चित नहीं है कि क्यों, शायद इसलिए कि यदि आप संख्याओं के प्रतिलिपि बना रहे हैं और छेड़छाड़ कर रहे हैं आरएस (जैसा कि आप एक 3 डी गेम में हो सकते हैं) तो 64-बिट 'डबल' की बजाय 32-बिट 'फ्लोट' का उपयोग करने के बीच परफ अंतर महत्वपूर्ण हो सकता है। http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.mathhelper_members.aspx – LukeH
@LukeH - उस स्थिति में मैं उस प्रकार के साथ जाऊंगा जिसके परिणामस्वरूप कम से कम कास्टिंग होता है। यदि आप अधिक एक्सएनए कॉल कर रहे हैं तो फ्लोट के साथ जाएं, लेकिन अन्यथा डबल के साथ जाएं। – ChrisF
यह पूर्णांकों, फ्लोटिंग प्वाइंट संख्या के लिए double
और decimal
दशमलव-सटीक संख्या के लिए के लिए int
की एक डिफ़ॉल्ट विकल्प के साथ शुरू करने के लिए अच्छा है। फिर ऑप्टिमाइज़ेशन के रूप में या तो उस विकल्प में परिवर्तन करें (float
double
से कम स्थान लेता है, इसलिए यदि आप उनमें से बहुत बड़ी संख्या में स्टोर कर रहे हैं तो उचित विकल्प हो सकता है), कुछ बाहरी लगाए गए मानदंडों से बेहतर मिलान करने के लिए, या क्योंकि यह जीता पर्याप्त नहीं है (यानी जब आपको के बजाय long
का उपयोग करने की आवश्यकता है)।
यदि प्रदर्शन एक मुद्दा है तो आपको मापना होगा कि छोटी मेमोरी पदचिह्न कास्ट की लागत के लिए क्षतिपूर्ति करता है, तो यह इस बात पर निर्भर करेगा कि आप कितना कास्टिंग कर रहे हैं।
यदि प्रदर्शन कोई मुद्दा नहीं है तो मैं कोड क्लीनर बनाने के लिए डबल के साथ जाऊंगा।
- 1. सी ++ इंट फ्लोट कास्टिंग
- 2. जावा में युगल के युगल में फ्लोट की सरणी को कैसे परिवर्तित करें?
- 3. क्या प्रत्येक क्वेरी में एक नया जेडीबीसी टेम्पलेट चालू करना या हर जगह एक इंजेक्ट करना बेहतर है?
- 4. क्या वैश्विक "ऑपरेटर नया()" हर जगह प्रतिस्थापित करना संभव है?
- 5. सी ++ युगल सुनिश्चित करना 64 बिट्स
- 6. सी # में इंटरफेस कास्टिंग क्या है?
- 7. हर जगह कर्सर छुपाएं
- 8. क्या यह सिर्फ मुझे है? मुझे एक्सपीएथ
- 9. सी # में ऑब्जेक्ट कास्टिंग करना हमेशा प्रारंभिक ऑब्जेक्ट
- 10. वस्तु सी # में कास्टिंग
- 11. क्यों "एंड्रॉइड:" हर जगह?
- 12. क्यूटी :: WA_TranslucentBackground हर जगह उपलब्ध है?
- 13. क्या यह सी ++ पीडीपी -11 फ्लोट आईईईई में परिवर्तित करेगा?
- 14. एक्शनबैरशेलॉक और होलो हर जगह - ओवरफ्लो को मजबूर करना?
- 15. युगल
- 16. सी शैली कास्टिंग और C++ में पठनीयता
- 17. सी # - क्या 32-बिट फ्लोट गणित पुस्तकालय है?
- 18. वर्डप्रेस - 404 के हर जगह
- 19. ठीक है, यह काम किया। हकीकत में यह क्या है?
- 20. कास्टिंग कैसे काम करता है?
- 21. सी # युगल अवधि
- 22. युगल में पूर्णांक का प्रतिनिधित्व
- 23. यह सीएसएस एंड्रॉइड पर क्रोम के लिए क्यों काम नहीं करता है लेकिन हर जगह काम करता है?
- 24. मैं हर जगह inverse_of का उपयोग क्यों नहीं करना चाहूंगा?
- 25. सी ++ प्रोग्रामिंग कास्टिंग: क्या यह किया जा सकता है?
- 26. क्या यह काम रद्द करना संभव है?
- 27. क्यों मेरी सामग्री सुरक्षा नीति हर जगह काम लेकिन सफारी
- 28. सी # में विस्तार विधियों अधिभार, क्या यह काम करता है?
- 29. "अगर" स्थिति से बेहतर है ?? और कास्टिंग
- 30. क्या दो की शक्ति में स्मृति आवंटित करना बेहतर है?
मुझे लगता है कि यह पागल है कि जावा और .NET को 'डबल' से 'फ्लोट' तक एक स्पष्ट कलाकार की आवश्यकता होती है, लेकिन दूसरी तरफ नहीं, क्योंकि 'फ्लोट' के लिए संख्यात्मक मात्रा के सर्वोत्तम 'डबल' प्रतिनिधित्व की प्रत्येक कलाकार उस मात्रा का सबसे अच्छा 'फ्लोट' प्रतिनिधित्व उत्पन्न करें या इसके एक एलएसबी के भीतर है। इसके विपरीत, 'डबल' की मात्रा का सबसे अच्छा 'फ्लोट' प्रतिनिधित्व कास्टिंग अक्सर एक परिणाम उत्पन्न करता है जो कि उस मात्रा के सर्वोत्तम 'डबल' प्रतिनिधित्व के पास कहीं भी नहीं है, और परिमाण के सैकड़ों आदेशों से दूर हो सकता है (इसके प्रभावों की तुलना करें कास्टिंग ... – supercat
... 3.0E + 38 * 2.0 'फ्लोट' (फ्लोट से अधिक सही ढंग से तुलना करता है। मैक्सवेल्यू), बनाम 3.0E + 38f * 2.0f को 'डबल' कास्टिंग (गलत रूप से 1.0E + 308 से अधिक की तुलना करता है)। या, एक सामान्य मामले के लिए, 'फ्लोट एफ = (फ्लोट) (1.0/10.0); 'और' डबल डी = 1.0 एफ/10.0 एफ; 'की शुद्धता की तुलना करें।' असाइनमेंट की पूर्व शैली में एक कास्ट की आवश्यकता होती है, भले ही इस तरह के सभी असाइनमेंट अनिवार्य रूप से सही होंगे। बाद की शैली को कलाकारों की आवश्यकता नहीं होती है, भले ही इस तरह के अधिकांश असाइनमेंट केवल सादे गलत हैं। – supercat