0.00% से लेकर 100.00% तक प्रतिशत मान रखने के लिए सबसे अच्छा डेटाटाइप क्या है?
0.00% से लेकर 100.00% तक प्रतिशत मान रखने के लिए सबसे अच्छा डेटाटाइप क्या है?
जवाबों:
आपके प्रतिशत पर दो दशमलव स्थानों को मानते हुए, आपके द्वारा उपयोग किया जाने वाला डेटा प्रकार इस बात पर निर्भर करता है कि आप अपने प्रतिशत को कैसे संग्रहीत करते हैं। यदि आप उनके आंशिक समतुल्य को स्टोर करने जा रहे हैं (जैसे 100.00% 1.0000 के रूप में संग्रहीत), तो मैं decimal(5,4)
डेटा को एक CHECK
बाधा के साथ डेटा प्रकार में संग्रहीत करूँगा जो यह सुनिश्चित करता है कि मान कभी भी 1.0000 से अधिक न हों (यह मानते हुए कि कैप है) और कभी भी नीचे नहीं जाएं। (यह मानते हुए कि मंजिल है)। यदि आप उनके अंकित मूल्य को स्टोर करने जा रहे हैं (जैसे 100.00% को 100.00 के रूप में संग्रहीत किया जाता है), तो आपको decimal(5,2)
एक उपयुक्त CHECK
बाधा के साथ उपयोग करना चाहिए । एक अच्छा कॉलम नाम के साथ संयुक्त, यह अन्य डेवलपर्स को स्पष्ट करता है कि डेटा क्या है और डेटा को कॉलम में कैसे संग्रहीत किया जाता है।
decimal(5,2)
जहाँ 2 दशमलव विभाजक के बाद अंकों की संख्या को दर्शाता है?
decimal(5,2)
वह है जो एक चेक बाधा के साथ पकड़ा जाना चाहिए।
decimal(5,4)
और decimal(5,2)
उपरोक्त टिप्पणी के बाद बदल दिया गया था ... मुझे लगता decimal(5,4)
है कि बेहतर परिभाषा होगी - यानी आप 0 से 1 को 2 दशमलव स्थानों के साथ संग्रहीत करना चाहते हैं, न कि 0 से 100 तक। कारण यह है कि प्रतिशत का बाहर होना 100; इसलिए 100% 100/100 है जो 1. है। इस तरह से करने से अधिकांश मामलों (जैसे 100% * 100% = 100%
, नहीं 10000%
; 1 * 1 = 1
) के लिए अधिक समझ में आता है ।
100.00
) तो आपको जरूरत है decimal(5,2)
। यदि मानों को अंशों (जैसे 1.0000
) के रूप में संग्रहीत किया जा रहा है , तो आपको आवश्यकता है decimal(5,4)
। पोस्ट को अपडेट करेंगे।
decimal
।columnName decimal(precision, scale)
। परिशुद्धता कहती है कि अंकों की कुल संख्या, जो संख्या में आयोजित की जा सकती है, पैमाने कहते हैं कि दशमलव स्थान के बाद उनमें से कितने हैं, इसलिए decimal(3,2)
एक संख्या है जिसका प्रतिनिधित्व किया जा सकता है के रूप में #.##
, decimal(5,3)
हो सकता है ##.###
। decimal
और numeric
अनिवार्य रूप से एक ही बात कर रहे हैं। हालांकि decimal
, एएनएसआई आज्ञाकारी है, इसलिए हमेशा इसका उपयोग करें जब तक कि अन्यथा नहीं बताया जाता है (जैसे आपकी कंपनी के कोडिंग मानकों द्वारा)।उदाहरण परिदृश्य
decimal(5,4)
।decimal(3,2)
।उदाहरण:
if object_id('Demo') is null
create table Demo
(
Id bigint not null identity(1,1) constraint pk_Demo primary key
, Name nvarchar(256) not null constraint uk_Demo unique
, SomePercentValue decimal(3,2) constraint chk_Demo_SomePercentValue check (SomePercentValue between 0 and 1)
, SomePrecisionPercentValue decimal(5,2) constraint chk_Demo_SomePrecisionPercentValue check (SomePrecisionPercentValue between 0 and 1)
)
आगे की पढाई:
0 to 1
बनाम 0 to 100
: सी #: भंडारण प्रतिशत, 50 या 0.50?मैं थॉमस से सहमत हूं और मैं कम से कम WPF अनुप्रयोगों के लिए DECIMAL (5,4) समाधान चुनूंगा।
MSDN न्यूमेरिक फॉर्मेट स्ट्रिंग के बारे में जानने के लिए एक नज़र डालें: http://msdn.microsoft.com/en-us/library/dwhawy9k#PFormatString
प्रतिशत ("P") प्रारूप एक संख्या को 100 से गुणा करता है और इसे एक स्ट्रिंग में परिवर्तित करता है जो प्रतिशत का प्रतिनिधित्व करता है।
तब आप अपने XAML कोड में इसका उपयोग कर सकेंगे:
DataFormatString="{}{0:P}"
यदि 2 दशमलव स्थान आपकी सटीकता का स्तर है, तो एक "स्मॉलिंट" इसे सबसे छोटे स्थान (2-बाइट्स) में संभाल लेगा। आप प्रतिशत को 100 से गुणा करते हैं।
संपादित करें: दशमलव प्रकार शायद एक बेहतर मेल है। फिर आपको मैन्युअल रूप से स्केल करने की आवश्यकता नहीं है। यह प्रति मूल्य 5 बाइट लेता है।
संख्यात्मक (n, n) का उपयोग करें जहां n में 1.00 से गोल करने के लिए पर्याप्त रिज़ॉल्यूशन है। उदाहरण के लिए:
declare @discount numeric(9,9)
, @quantity int
select @discount = 0.999999999
, @quantity = 10000
select convert(money, @discount * @quantity)