पपुचिनो,
मैं पैसे और स्मॉलमनी के प्रकारों की अनुशंसा नहीं करता, जब तक कि आप निश्चित न हों कि केवल अंकगणित जो आप करने की योजना बना रहे हैं वह है जोड़ और घटाव। यदि आप विनिमय दरों, प्रतिशत आदि से निपट रहे हैं, तो आप इन प्रकारों के साथ वास्तविक समस्याओं का जोखिम उठाते हैं।
यहां सिर्फ एक छोटा सा उदाहरण दिया गया है जो आपको पैसे, दशमलव और फ्लोट के बीच अंतर दिखाता है जब विभाजन शामिल होता है। ऐसे उदाहरणों के साथ आना संभव है जहां अंतर बहुत अधिक नाटकीय हो।
declare @m1 money, @m2 money, @m3 money
declare @d1 decimal(19,4), @d2 decimal(19,4), @d3 decimal(19,4)
declare @f1 float, @f2 float, @f3 float;
set @m1 = 1.00;
set @m2 = 345.00;
set @m3 = @m1/@m2;
set @d1 = 1.00;
set @d2 = 345.00;
set @d3 = @d1/@d2;
set @f1 = 1.00;
set @f2 = 345.00;
set @f3 = @f1/@f2;
select @m3, @d3, @f3;
परिणाम:0.0028 0.0029 0.00289855072463768
उद्योग के आधार पर, सही डेटा प्रकार के बारे में निर्णय लेने में आपकी सहायता के लिए दिशानिर्देश या नियम हो सकते हैं। कोई एक सही उत्तर नहीं है।
जोड़ी गई टिप्पणियां:
आप सही हैं कि पैसा/पैसा पैसा नहीं होना चाहिए, लेकिन SQL सर्वर (बेवजह) ठीक उसी परिणाम का उत्पादन करता है:दो पैसे मूल्यों के भागफल से पैसा टाइप करें। यह फर्जी है, लेकिन जैसा कि आप नीचे दिए गए उदाहरण से देखते हैं, यह वही है जो आपको मिलता है, भले ही इसका कोई मतलब नहीं है:
declare @m1 money, @m2 money;
declare @d1 decimal(19,4), @d2 decimal(19,4);
set @m1 = 1.00;
set @m2 = 345.00;
set @d1 = 1.00;
set @d2 = 345.00;
select @m1/@m2, @d1/@d2
परिणाम:0.0028 0.0028985507246376811
0.0028 टाइप मनी वाला परिणाम सही परिणाम से 3-4% कम है।
बेशक, ऐसी कई स्थितियां हैं जहां आपको मुद्रा मूल्यों को विभाजित करने की आवश्यकता होती है। पैसे के प्रकार का उपयोग करने का खतरा यह है कि भागफल गलत प्रकार है (और एक उत्तर सही के करीब नहीं है)। ऐसे प्रश्नों के उदाहरण जिनके लिए मुद्रा को विभाजित करने की आवश्यकता होती है:
मान लीजिए आप 320 युआन का आदान-प्रदान करते हैं और बैंक आपको 47.3 अमेरिकी डॉलर देता है। आपको दी गई विनिमय दर क्या है?
मान लीजिए कि आप $23 का निवेश करते हैं और एक साल बाद इसकी कीमत $31 है। आपकी वापसी की प्रतिशत दर क्या है?
इन दोनों गणनाओं के लिए मुद्रा मूल्यों को विभाजित करने की आवश्यकता होती है।