2010-05-18 7 views
8

क्या आपकी सलाह है: मनी वस्तुओं के संग्रह पर थोक गणित आपरेशनों में संचित त्रुटि केमुद्रा-गहन मुलायम में गोल करने वाली त्रुटियों से निपटने के लिए सामान्य रणनीतियों?

  1. मुआवजा। यह आपके लोकेल के लिए आपके उत्पादन कोड में कैसे कार्यान्वित किया जाता है?
  2. सिद्धांत लेखा में गोलाई के पीछे।
  3. किसी भी विषय पर साहित्य

मैं वर्तमान में Fowler पढ़ता हूं। उन्होंने मनी टाइप का उल्लेख किया है, यह टाइपकल संरचना (int, long, BigDecimal) है, लेकिन रणनीतियों पर कुछ भी नहीं कहता है।

मनी-राउंडिंग (here, और here) पर पुरानी पोस्ट मुझे आवश्यक विवरण और औपचारिकता प्रदान नहीं करते हैं।

विचार मैं मंत्रिमंडल में पाया "दौर आधा भी" सबसे अच्छा तरीका त्रुटि को संतुलित करने के रूप में से संबंधित हैं।

सहायता के लिए धन्यवाद।

+0

यदि आप लेखांकन के बारे में पूछ रहे हैं, तो आपको एक वास्तविक एकाउंटेंट से पूछना चाहिए। उनके पास नियम हैं। अमेरिका में, यह GAAP है जो इसे कवर करता है। क्या आपने एकाउंटेंट से पूछा है? क्या आपको लेखांकन नियम मिलते हैं जो आपके लोकेल में लागू होते हैं? –

+0

@ एसएलॉट: हाय, मैं लिथुआनिया में हूं। आज मैंने स्थानीय बैंक कार्यकर्ता से बात की :)। उसने मुझे कहा कि महीने या तिमाही के अंत में वे विसंगति को लिखते हैं। लेकिन यह जवाब मेरी जरूरतों को पूरा नहीं करता है। – Max

+0

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

उत्तर

3

बैंकर के गोलाकार का उपयोग करें। आप निकटतम दो-पैनी के चारों ओर घूमते हैं।

http://www.xbeat.net/vbspeed/i_BankersRounding.htm

आप इस पर विस्तार बजाय toward दौर के सबसे नजदीक दो कौड़ी कर सकते हैं। तो 22.5 राउंड 22, लेकिन 23.5 राउंड 24 से 23. 23.1 और 22.9 दोनों गोल 23 पर। हालांकि, मूल बैंकर का एल्गोरिदम अधिक लोकप्रिय है।

+0

विस्तार के लिए धन्यवाद। – Max

3

कभी भी डबल या फ्लोट में पैसे के मूल्यों को स्टोर न करें - int या long का उपयोग करें क्योंकि बाइनरी में 0.1 सटीक रूप से स्टोर करने का कोई तरीका नहीं है।

+0

आमतौर पर उन इंट्स एंड लांग्स एंड बिगडिसीमल मनी के आंतरिक हैं। दिलचस्प बात यह है कि जब आप धन पर बहुत से संचालन करते हैं तो संचय त्रुटि से लड़ने के लिए कैसे करें। – Max

+3

@max: यह क्या है, एकाउंटेंसी ओवरफ्लो? ;) – Robert

+0

आप क्या कर रहे हैं? मानक अंकगणितीय ओप में कोई गोल करने वाली त्रुटियां नहीं होंगी - यह एक निश्चित-बिंदु प्रतिनिधित्व का उपयोग करने का उद्देश्य है। –

3

यह सब आवेदन पर निर्भर करता है। उम्मीद है कि ऐसी कई स्थितियां नहीं हैं जहां गोल करने की आवश्यकता है। उदाहरण के लिए, एक खाते से दूसरे खाते में धन हस्तांतरण करने के लिए कोई गोल करने की आवश्यकता नहीं होती है।

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

1

मैं मौद्रिक मात्रा के साथ एक सा (सिर्फ एक बिट) में काम किया है और मैं अपनी कंपनी में उपयोग की गई रणनीति के रूप में अत्यंत उत्सुक था ...

ऐसा लगता है कि हम double उपयोग करते हैं, लेकिन वे है इसके बारे में सोचा।

बात यह है कि मात्रा में हम से निपटने कि महान (कहते हैं कि कम से कम 10k) नहीं हैं और ज्यादा से ज्यादा हम 3 अंक दशमलव के बाद की जरूरत है, 7 महत्वपूर्ण अंक की कुल के लिए है।

जब से हम 64bits सॉफ्टवेयर का उपयोग कर रहे हैं (और सी ++) double प्रकार के संचालन के संख्या के लिए पर्याप्त महत्वपूर्ण अंक प्रदान करता है हम इस पर ले जाने के लिए :)

आप और अधिक सटीक की जरूरत है, वहाँ (उदाहरण के लिए उपयोग करने के लिए एल्गोरिदम हैं , दूसरों

  • एक पैसे से रूपांतरण दूसरे करने के लिए जो कोई दशमलव की आवश्यकता होती है कुछ धन के साथ, बेशक
  • मुद्रण समस्याएं बदलते रहता है,: जबकि कई धनराशि जोड़ने), लेकिन व्यक्तिगत रूप से मुझे लगता है कि मुद्दे के दिल अधिक से आता है अधिकतर 2 की आवश्यकता है, आदि ...

शायद आप जो परिचालन कर रहे हैं उस पर विस्तार कर सकते हैं?

+0

हाय, मैथ्यूयू। मैंने युगल पर काम कर रहे एक विरासत प्रणाली को भी देखा है ... हमें कई समस्याओं का सामना करना पड़ता है (आपका उल्लेख किया गया धन रूपांतरण भी)। अन्य www.ciceuta.es/euro/doc/1/eup22en.pdf पर उल्लेखित हैं। विशिष्ट रूप से विभाजन और गुणा द्वारा प्राप्त छोटी संख्याओं में एक विसंगति है। लगता है, मैं उन मध्यवर्ती ओपों के लिए परिशुद्धता बढ़ा सकता हूं और संभावित रूप से गणना पुनर्निर्माण (हालांकि उस "छोटी संख्या" डेटा का हिस्सा मेरे द्वारा नियंत्रित नहीं है)। मैं इस निष्कर्ष पर पहुंचा हूं कि या तो हम त्रुटि को अनदेखा करते हैं, या राउंड-आधे की तरह राउंजिंग को संतुलित करके क्षतिपूर्ति करते हैं। – Max

5

वित्तीय डेटा रिकॉर्ड करते समय कई गोल करने वाले मुद्दे हैं। सबसे पहले इस मुद्दे को, भी, स्टोर और सटीक दशमलव संख्या

  • सबसे डेटाबेस दशमलव डेटा प्रकार है जिस पर आप से पहले और दशमलव बिंदु के बाद अंकों की संख्या निर्दिष्ट कर सकते हैं प्रदान करते हैं (मुद्राओं दशमलव अंकों की संख्या में भिन्नता को पुनः प्राप्त करने की क्षमता है मैं 0, 2, 3 दशमलव अंकों के साथ मुद्राओं के साथ निपटाया है)
  • इस डेटा से निपटने के दौरान और आप एप्लिकेशन पक्ष पर किसी भी अप्रत्याशित गोलिंग त्रुटियों से बचना चाहते हैं, तो आप सामान्य दृष्टिकोण के रूप में BCD का उपयोग कर सकते हैं, या आप प्रतिनिधित्व करने के लिए पूर्णांक का उपयोग कर सकते हैं कोई निश्चित दशमलव नोटेशन या अपना खुद का

यदि यह पहला मुद्दा सॉर्ट किया गया है तो कोई अतिरिक्त (या पदार्थ) कोई गोल करने वाली त्रुटियों को पेश नहीं कर सकता है। पूर्णांक द्वारा गुणा के लिए भी चला जाता है।

दूसरी समस्या, जानकारी के नुकसान के बिना डेटा को स्टोर और पुनर्प्राप्त करने में सक्षम होने के बाद, विभाजन (या गैर पूर्णांक द्वारा गुणा) के कारण त्रुटियों को गोल करने की उम्मीद है।

उदाहरण के लिए अपनी मुद्रा प्रारूप 2 दशमलव अनुमति देता है और आप लेनदेन है कि रिकॉर्ड को संतुलित करता है 10 3 के बराबर टुकड़ों में से एक डेबिट आप केवल

10.00 
-3.33 
-3.33 
-3.33 

और

-0.01 
है जैसे कि यह स्टोर कर सकते हैं संग्रहीत करना चाहते हैं, तो

(राउंडिंग त्रुटि)

यह ऐसी समस्या है जो डेटा प्रकार भंडारण विकल्प के बावजूद घटित होगी और यदि आप अपने खाते टी चाहते हैं तो इसकी देखभाल करने की आवश्यकता है ओ संतुलन यह स्थिति मुख्य रूप से प्रभाग द्वारा प्रस्तुत की जाती है (या गैर पूर्णांक द्वारा गुणा करके, जिसमें कई महत्वपूर्ण अंक होते हैं)।

इससे निपटने का एक तरीका यह सत्यापित करना है कि आपका डेटा ऐसे परिचालनों के बाद शेष है या किसी त्रुटि स्थिति के विपरीत अनुमति देने वाले अंतर को पहचानता है।

संपादित करें: साहित्य के संदर्भ के लिए, this one दिलचस्प लगता है और बहुत लंबा नहीं है और दिलचस्प परिदृश्यों के साथ व्यापक दर्शक हैं।

+0

मुझे बीसीडी सामान याद दिलाने के लिए धन्यवाद। हाँ, मुझे यकीन है कि दृढ़ता ठीक है और सटीक दशमलव की अनुमति देता है। आम तौर पर मेरी समस्या को छोटे घुमावदार मात्राओं को संक्षेप में आपके बिंदु पर आसवित किया जा सकता है। करुणा यह है कि मैं अपने आप को इस ब्रेक-डाउन को पूरी तरह से नियंत्रित नहीं कर रहा हूं :)। तो मुझे संभवतः गोल आधा गॉसियन विधि या किसी भी अन्य सांख्यिकीय का सहारा लेना होगा ... – Max

+0

@ मैक्स, अच्छी तरह से इन संचित गोलियों की त्रुटियों से निपटने की रणनीति आपके व्यापार नियमों पर निर्भर करती है (कभी-कभी आपको बराबर मात्रा बनाने की आवश्यकता होती है और आपके पास त्रुटि रिकॉर्ड करने के लिए, अन्य बार इसे गोल करने वाली त्रुटियों को वितरित करने की अनुमति है)। – Unreason

+0

बीए से बात की, हम अपने हिस्से में बदलाव करेंगे और बाहरी प्रणाली में बदलावों के बारे में भी पूछेंगे जो हमें उन "छोटी अपर्याप्त" ब्रेक-डाउन राशियों को खिलाते हैं। वैसे भी यह एसओ पोस्ट मूल्यवान था - कम से कम मुझे यह महसूस करना शुरू हो गया कि गोल करने वाले कर्मचारियों की तुलना में मैं अधिक मनोरंजक हूं :) – Max

1

आपको क्या करना चाहिए बाजार या क्षेत्राधिकार के सम्मेलनों द्वारा आपको अच्छी तरह से सूचित किया जा सकता है। उदाहरण के लिए, ऑस्ट्रेलियाई बाजार में मूल्य निर्धारण बांड के लिए आवश्यक है कि आप कुछ मध्यवर्ती परिचालनों को 8 दशमलव स्थानों पर ले जाएं।अंतिम मूल्य को दशमलव की विशिष्ट संख्या (3 मुझे लगता है कि मेरे सिर के ऊपर से लगता है) को उद्धृत किया गया है।

यदि आप एकाउंटिंग ऐप से निपट रहे हैं, तो मैं उम्मीद करता हूं कि आपके कानूनी माहौल के लिए प्रासंगिक लेखा मानक मानकों को संभवतः यह निर्देशित किया जाए।

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