2009-03-06 15 views
27

मुझे डेटाबेस में कुछ पैसे संबंधित फ़ील्ड स्टोर करने की आवश्यकता है, लेकिन मुझे यकीन नहीं है कि धन और दशमलव के बीच कौन सा डेटा प्रकार उपयोग करना है।डेटाबेस में धन मूल्य संग्रहीत करने का सबसे अच्छा तरीका क्या है?

उत्तर

40

दशमलव और धन बहुत विश्वसनीय होना चाहिए। मैं आपको आश्वस्त कर सकता हूं (विरासत वाले अनुप्रयोगों से दर्दनाक व्यक्तिगत अनुभव से) फ्लोट का उपयोग न करें!

+1

क्यों नहीं? फ्लोट का उपयोग करके आपको क्या समस्याएं मिलीं? –

+7

गोलाई त्रुटियों संभवत: – nalply

+2

उनके आवेदन शायद कुछ 200,000 मात्रा में ऊपर कुल और अंक से बाहर भाग जब संख्या बहुत से गणना कर –

10

मुझे लगता है कि यह सटीकता और पैमाने पर आता है। आईआईआरसी, money 4 डीपी है। यदि यह ठीक है, money आपके इरादे को व्यक्त करता है। यदि आप अधिक नियंत्रण चाहते हैं, तो एक विशिष्ट परिशुद्धता और स्केल के साथ decimal का उपयोग करें।

15

मैं हमेशा दशमलव का उपयोग करता हूं; पहले कभी पैसा इस्तेमाल नहीं किया।

हाल ही में, मैं बनाम Sql सर्वर में पैसा डेटा प्रकार दशमलव कि आपको दिलचस्प लग सकते के बारे में एक लेख मिला:

Money vs Decimal

यह भी लगता है कि पैसे डेटाप्रकार हमेशा सही परिणाम नहीं होती तो संभव है जब आप इसके साथ गणना करें: click

मैंने अतीत में स्वागत के रूप में क्या किया है, एक आईएनटी फ़ील्ड का उपयोग कर रहा है, और राशि सेंट (सेंटेंट/डॉलरेंट) में स्टोर करता है।

+0

आप विस्तृत कृपया सकते हैं हम 100/3, 10/3 और 1/3, आदि कैसे प्रतिनिधित्व कर सकते हैं पर? – NoChance

4

यह आपके आवेदन पर निर्भर करता है !!! मैं वित्तीय सेवाओं में काम करता हूं जहां हम आमतौर पर बिंदु के बाद 5 दशमलव स्थानों पर महत्वपूर्ण मानते हैं, निश्चित रूप से जब आप 3.12345 पेंस/सेंट पर कुछ मिलियन खरीदते हैं तो यह एक महत्वपूर्ण राशि है। कुछ एप्लिकेशन इसे संभालने के लिए अपने स्वयं के एसक्यूएल प्रकार की आपूर्ति करेंगे।

दूसरी तरफ, यह आवश्यक नहीं हो सकता है। < हास्य > ठेकेदार दर हमेशा निकटतम £ 100 के लिए गोलाकार लगती थीं, लेकिन वर्तमान में वर्तमान क्रेडिट क्रंच में करीब 25 पाउंड के करीब लगती है। </हास्य >

1

दशमलव का उपयोग करें और आपको लगता है कि आपको चाहिए कि अधिक दशमलव स्थानों का उपयोग करें ताकि caclulations सही हो। पैसा गणना में सही परिणाम वापस नहीं करता है। किसी भी परिस्थिति में फ्लोट या वास्तविक का उपयोग न करें क्योंकि ये अवांछित डेटाटाइप हैं और गणना गलत होने का कारण बन सकती हैं (विशेष रूप से वे अधिक जटिल हो जाती हैं)।

2

उपलब्ध डेटाटाइप के आधार पर अपने विचारों को संरेखित न करें। इसके बजाय, अपनी आवश्यकता का विश्लेषण करें और फिर देखें कि कौन सा डेटाटाइप सबसे अच्छा फिट बैठता है। फ़्लोट किसी भी समय फ़्लोटिंग पॉइंट नंबरों के बाइनरी संस्करण को संग्रहीत करने में आर्किटेक्चर की सीमा पर विचार करने का सबसे खराब विकल्प है। पैसा एक मानक इकाई है और निश्चित रूप से धन से संबंधित संचालन को संभालने के लिए अधिक समर्थन होगा। दशमलव के मामले में, आपको प्रत्येक और सबकुछ संभालना होगा, लेकिन आपको पता है कि यह केवल आप ही है जो दशमलव प्रकार को संभालने वाला है, इस प्रकार कोई आश्चर्य नहीं है कि आप अन्य दो डेटा प्रकारों के साथ क्या प्राप्त कर सकते हैं।

1

कुछ डेटा (जैसे पैसे) के लिए जहां आप फ्लोट वैल्यू के कारण कोई अनुमान या परिवर्तन नहीं चाहते हैं, तो आपको यह सुनिश्चित करना होगा कि डेटा कभी भी 'फ़्लोटिंग' नहीं है, यह दशमलव बिंदु के दोनों किनारों पर कठोर होना चाहिए।
सुरक्षित होने का एक आसान तरीका यह है कि इसे INTEGER डेटा प्रकार में परिवर्तित करके मूल्य के लिए, और सुनिश्चित करें कि जब आप मान को पुनः प्राप्त करते हैं, तो दशमलव बिंदु उचित स्थान पर रखा जाता है।
उदा।
1. डेटाबेस में $ 240.10 को बचाने के लिए।
2. एक शुद्ध अभिन्न फार्म के लिए यह कन्वर्ट: 24010 (आप अपनी बस दशमलव के बदलाव में जानते हैं)।
3. इसे वापस उचित दशमलव स्थिति में वापस लाएं। दाएं से 2 पदों पर दशमलव रखें। $ 240,10

तो, जबकि databse में किया जा रहा है यह एक कठोर पूर्णांक के रूप में किया जाएगा।

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

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