0.00% থেকে 100.00% পর্যন্ত শতাংশ মান ধরে রাখার জন্য সেরা ডেটাটাইপ কী?
0.00% থেকে 100.00% পর্যন্ত শতাংশ মান ধরে রাখার জন্য সেরা ডেটাটাইপ কী?
উত্তর:
আপনার শতাংশে দুটি দশমিক স্থান ধরে নেওয়া, আপনি যে ধরণের ডেটা ব্যবহার করেন তা নির্ভর করে আপনি কীভাবে আপনার শতাংশ সংরক্ষণের পরিকল্পনা করছেন। যদি আপনি তাদের ভগ্নাংশের সমতুল্য (উদাহরণস্বরূপ, 100.00% কে 1.0000 হিসাবে সঞ্চিত) সঞ্চয় করতে চলেছেন তবে আমি কোনও decimal(5,4)
ডাটা টাইপে কোনও CHECK
সীমাবদ্ধতার সাথে ডেটা সংরক্ষণ করব যা নিশ্চিত করে যে মানগুলি কখনই 1.0000 (যেটিকে ক্যাপটি ধরে নিচ্ছে) অতিক্রম করবে না এবং কখনও 0 এর নিচেও যাবে না (ধরে নিলাম যে মেঝে)। আপনি যদি তাদের মুখের মানটি সংরক্ষণ করতে চলেছেন (যেমন 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 থেকে 100 না করে 2 দশমিক স্থানে 0 থেকে 1 সঞ্চয় করতে চান a শতাংশ হওয়ার কারণটি বাইরে নেই 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?আমি থমাসের সাথে একমত এবং আমি কমপক্ষে ডাব্লুপিএফ অ্যাপ্লিকেশনগুলির জন্য ডেসিমাল (5,4) সমাধানটি বেছে নেব।
কেন এমএসডিএন সংখ্যাসূচক ফর্ম্যাট স্ট্রিংটি দেখুন: http://msdn.microsoft.com/en-us/library/dwhawy9k#P FormatString
শতাংশ ("পি") ফর্ম্যাট স্পেসিফায়ার একটি সংখ্যাকে 100 দ্বারা গুণিত করে এবং একটি স্ট্রিংয়ে রূপান্তর করে যা শতাংশকে উপস্থাপন করে।
তাহলে আপনি এটি আপনার এক্সএএমএল কোডটিতে ব্যবহার করতে সক্ষম হবেন:
DataFormatString="{}{0:P}"
যদি 2 দশমিক স্থানগুলি আপনার নির্ভুলতার স্তর হয় তবে একটি "ছোট্ট" এটিকে ক্ষুদ্রতম স্থানে (2-বাইট) পরিচালনা করবে। আপনি 100 দ্বারা গুণিত শতাংশ সংরক্ষণ করুন।
সম্পাদনা: দশমিক প্রকারটি সম্ভবত আরও ভাল ম্যাচ। তারপরে আপনাকে ম্যানুয়ালি স্কেল করার দরকার নেই। এটিতে প্রতিটি মূল্য 5 বাইট লাগে।
সংখ্যাসূচক (এন, এন) ব্যবহার করুন যেখানে এন এর পর্যাপ্ত রেজোলিউশন রয়েছে যেখানে 1.00 হয়। এই ক্ষেত্রে:
declare @discount numeric(9,9)
, @quantity int
select @discount = 0.999999999
, @quantity = 10000
select convert(money, @discount * @quantity)