2008-10-01 8 views

उत्तर

16

decimal

आप राउंडिंग के चलते सटीक नहीं खोएंगे।

+0

बाद में इस प्रश्न पर आ रहा है, मुझे यह जवाब अधिक सहायक WRT मिला प्रश्न का SQL सर्वर भाग: http://stackoverflow.com/questions/158966/what-types-should-i-use-to-represent-percentages-in-c-and-sql-server/159780#159780। ऐसा लगता है कि उत्तर सीएलआर प्रकार के रूप में दशमलव है और एसक्यूएल सर्वर प्रकार के लिए फ्लोट है, कम से कम यदि आप आंशिक प्रतिशत स्टोर करने की संभावना रखते हैं। –

1

यह इस बात पर निर्भर करता है कि आपको कितनी सटीक आवश्यकता है। यदि आपको किसी भी दशमलव स्थान की आवश्यकता नहीं है तो आप छोटे int का भी उपयोग कर सकते हैं। लेकिन अगर आपको कुछ दशमलव स्थानों की आवश्यकता होती है तो आम तौर पर फ्लोट अच्छा होता है। मैं एलएलबीएलजेन का उपयोग करता हूं और%

-2

के लिए तैरता है यह इस बात पर निर्भर करता है कि आप उनके लिए क्या उपयोग कर रहे हैं।

यदि यह प्रदर्शन के लिए है, तो एक int बस ठीक होगा, और एक फ्लोट से तेज़ होगा। यदि यह कम गणित के लिए है, तो एक इंट अभी भी ठीक करेगी (या यहां तक ​​कि एक मामूली भी, किसी भी मामले में)।

यदि आप बहुत सारे गणित कर रहे हैं, तो एक फ्लोट शायद सबसे अच्छा, प्रदर्शन-वार होगा।

बेशक, जब तक कि आप प्रतिशत के छेड़छाड़ का बहुत कुछ नहीं कर रहे हैं, यह वास्तव में अंत में, प्रदर्शन के अनुसार, आधुनिक प्रोसेसर की गति को ध्यान में रखेगा।

संपादित करें: बेशक, 'int' मानता है कि आप केवल सख्त, पूर्ण-संख्या वाले पर्सेंट का उपयोग कर रहे हैं। यदि आप नहीं हैं, तो आप हमेशा फ्लोट या डीसी के साथ बेहतर होंगे।

+0

सवाल int बनाम फ्लोट के बारे में नहीं पूछा था ... आप यह भी कहते हैं कि इट्स तेज़ हैं लेकिन फिर यह भी कहते हैं कि प्रदर्शन के लिए फ्लोट बेहतर हैं। –

+0

@ स्टुअर्टब्रानहम: और यदि आप ध्यान देते हैं, तो मैंने उन परिस्थितियों को दिया जिनमें से दोनों सत्य हैं। और एक प्रतिशत को एक इंट (75, जिसका मतलब 75%) या एक फ्लोट (75% 75% का प्रतिनिधित्व करता है, या 75.5 का अर्थ 75.5%, या 7575% 75.5%) के रूप में संग्रहीत किया जा सकता है। सरल भंडारण और प्रदर्शन के लिए, एक int तेज है। यदि आपको संख्याओं के साथ काम करने की ज़रूरत है, तो एक फ्लोट सबसे अच्छा है - आप दशमलव स्थानों को स्टोर कर सकते हैं और अंतर्निहित गणित फ़ंक्शन हैं जो इसे बहुत ही सक्षम बनाते हैं। – Jeff

1

SQL सर्वर के संबंध में, यह दुर्लभ है कि मैं प्रतिशत संग्रहित करता हूं। 10 में से 9 बार आप उस डेटा को स्टोर करना चाहते हैं जिसका उपयोग प्रतिशत प्राप्त करने और आवश्यकतानुसार गणना करने के लिए किया जाता है।

यदि और केवल यदि आपके पास अनुभव दिखाने वाला अनुभवजन्य डेटा बहुत धीमा है, तो आगे बढ़ें। राउंडिंग मुद्दों से बचने के लिए पहले सुझाए गए दशमलव का प्रयोग करें।

+0

यह डोमेन विशिष्ट हो सकता है। ऐसे समय होते हैं जब आपके पास डेटा नहीं होता है, जो कि – mattlant

+0

का उपयोग करने के लिए रंग के% में प्रवेश करने वाले उपयोगकर्ता के रूप में होता है, जैसा कि @ मैटलेंट ने कहा था, मुझे जिन प्रतिशतों को स्टोर करने की आवश्यकता है वे डोमेन प्रतिशत हैं जैसे कि 17.5% वैट और 40% छूट आदि। –

2

यह काफी हद तक निर्भर करता है कि आपको कितनी सटीकता की आवश्यकता है; सबसे महत्वपूर्ण बात सुसंगत और स्पष्ट होना है। यह सुनिश्चित करने के लिए सावधानी बरतें कि आप क्षेत्र के उपयोग में सुसंगत हैं .. यानी इसे एक फ्लोट (एन = .5) के रूप में स्टोर न करें और फिर इसे पुन: स्थापित करने का प्रयास करें जैसे कि यह आपके कोड के दूसरे भाग में एक पूर्णांक था (mypercentage = n/100)। जब तक आप सुनिश्चित न करें कि ऐसा न करें और आप ऐसे लेजर का निर्माण नहीं कर रहे हैं जिसके लिए परिशुद्धता के 30 महत्वपूर्ण अंक की आवश्यकता है, तो अपनी नाव को int, double, या जो भी फ्लोट के बीच अपना पसंदीदा स्वाद चुनें। वाका वाका।

3

उत्तर एप्लिकेशन-निर्भर है।

अन्य ने इंगित किया है कि सटीक मूल्य का प्रतिनिधित्व करने के लिए दशमलव फ़्लोट से बेहतर है। लेकिन कभी-कभी बढ़ी हुई परिशुद्धता के लिए एक फ्लोट का उपयोग करना बेहतर होता है (उदाहरण के लिए गणना की गई वजन का एक सेट जो 100% तक जोड़ता है, शायद फ्लोट के रूप में बेहतर प्रतिनिधित्व किया जाता है)

संबंधित मुद्दे

 संबंधित मुद्दे