2009-05-21 10 views
5

में पैसा प्रकार कैसे परिभाषित करते हैं? क्या आप एफ # में पैसे के प्रकार को परिभाषित करने का सबसे अच्छा तरीका सुझा सकते हैं?आप एफ #

+1

उत्तर से निर्णय लेने के बाद, आपके प्रश्न को स्पष्ट करने की आवश्यकता है। क्या आप माप की इकाइयों (उदाहरण के लिए दो अलग-अलग मुद्राओं को भ्रमित करने के लिए), या दशमलव और गोल करने की समस्याओं के बारे में बात कर रहे हैं? – Benjol

उत्तर

11

हमेशा, हमेशा डेटा का उपयोग करें। वित्तीय डेटा संग्रहीत करने के लिए डीसीमल! http://msdn.microsoft.com/en-us/library/364x0z75(VS.71).aspx

+0

के दसवें हिस्से का उपयोग नहीं करूँगा, मुझे पता है कि सी # संदर्भ है लेकिन जानकारी एफ # के साथ भी सच है ... – Fraser

+0

तो एफ # उपाय कोई भी प्रदान नहीं करते हैं वित्तीय अनुप्रयोगों के लिए अतिरिक्त लाभ? –

+1

हां, लेकिन आप अभी भी एक दशमलव (या जो भी मुद्रा उपाय बनाते हैं) को परिभाषित कर सकते हैं – H27studio

0

इसमें लंबे, और स्टोर पेनी (या एक पैसा के दसवें) का उपयोग करें।

आप दशमलव की तरह कक्षा का उपयोग कर सकते हैं, लेकिन आमतौर पर यह being quite slow समाप्त होता है।

+0

इस मामले में गति से अधिक शुद्धता नहीं होना चाहिए? –

+0

छोटी इकाई को सटीक नहीं रखने के लिए एक पूर्णांक प्रकार का उपयोग कैसे किया जा रहा है। यह एक डबल प्रकार का उपयोग करने की तरह नहीं है। – gbjbaanb

+1

खतरनाक। त्रुटि के उच्च अवसर के अलावा, आपको बाद में समस्याएं हो सकती हैं जब कोई कहता है कि कर दर $ 0.001 प्रति यूनिट है। –

4

प्रकार पैसा = पूर्णांक <dollars> (जब तक आप अशुद्धि और गोलाई त्रुटियों के बारे में परवाह है! न)?

यह देखने की कोशिश भी नहीं की है ... क्या आप मनमानी इकाइयों को परिभाषित कर सकते हैं, या यह केवल स्पष्ट रूप से परिभाषित लोगों के साथ काम करता है?

जाहिर है आप शायद

प्रकार पैसा चाहते हैं = पूर्णांक <thousandths_of_currency> (या पैसे, या जो कुछ भी के दसियों)।

अधिक सटीक होने के लिए।

संपादित:

दशमलव के प्रकारों पर ध्यान देंगे तो आप पैसा परिभाषित कर सकते हैं के रूप में:

[<Measure>] 

type = pounds 

type money = decimal<pounds> 

जो मुद्राओं सुनिश्चित कर सकता है दुर्घटना से परिवर्तित क्रॉस नहीं कर रहे हैं, जैसे:

अगर

balance = decimal<pounds> 

और

payment = decimal<dollars> 

newbalance = balance + payment 

संकलन नहीं होगा, और आप के लिए decimal<pounds>

+0

मुझे यह नहीं पता कि आपका सुझाव क्या है :(एफ # मनमाने ढंग से इकाइयों को परिभाषित करने की अनुमति देता है। –

+0

ओएल ... ऐसा लगता है कि इकाइयां केवल फ्लोट पर लागू होती हैं ! – Massif

+0

एफ # आपको एक प्रकार के लिए माप की इकाइयों को परिभाषित करने की अनुमति देता है। इसलिए आप एक प्रकार की लंबाई = फ्लोट परिभाषित कर सकते हैं और इकाइयों को गणना के माध्यम से संरक्षित किया जाएगा। देखें: http://blogs.msdn.com/andrewkennedy /archive/tags/Units+of+Measure/default.aspx – Massif

2

Luca Bolognese suggests एक नाव के आधार पर अपने स्वयं के पैसे प्रकार परिभाषित करता है भुगतान को रूपांतरित करना होगा:

[<Measure>] type money 
let money (f:float) = f * 1.<money> 
+0

मैंने लिंक का पालन किया, और यह एक उदाहरण है, सुझाव नहीं। यह आवेदन पर निर्भर करता है, लेकिन मुझे लगता है कि बड़े पैमाने पर आवेदनों के लिए स्वीकार्य उत्तर जाने का तरीका है। –

1

एफ # अब के लिए समर्थन में बनाया गया है उपाय और इकाइयां। इस सुविधा के लिए मुख्य अभियंता के अनुसार, केनेडी का उद्देश्य अन्य समाधानों के साथ वित्तीय ऐप्स का लक्ष्य है।

तो मैं अपने स्वयं के पैसे प्रकार को एफ # में परिभाषित करने से पहले देखता हूं।

वर्नर