স্কিল সার্ভারে একটি ডাবলকে কী উপস্থাপন করে?


335

আমি প্রোপার্টিস-এ একটি দম্পতি আছে C#যা হয় doubleএবং আমি SQL সার্ভার একটি টেবিলে এই সঞ্চয় করতে চান, কিন্তু খেয়াল সেখানে নেই doubleটাইপ, তাই কি ব্যবহার ভাল, decimalবা float?

এটি অক্ষাংশ এবং দ্রাঘিমাংশ মানগুলিকে সঞ্চয় করবে, সুতরাং আমার সবচেয়ে নির্ভুল নির্ভুলতা প্রয়োজন।

এ পর্যন্ত প্রতিক্রিয়া জন্য ধন্যবাদ।


এসকিউএল সার্ভারে সিএলআর ডেটাটাইপ ম্যাপিংগুলি এখানে রয়েছে: http://msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx
অ্যাকিলিস

এমএসডিএন- এ একটি দুর্দান্ত থ্রেড রয়েছে যা ফ্লাট এবং ডেসিমালের মধ্যে প্রাথমিক পার্থক্য বর্ণনা করে। সংক্ষেপে, ফ্লোট আনুমানিক এবং কিছু মান উপস্থাপন করতে পারে না। গৃহীত উত্তর দেখুন।
ম্যাথু জোন্স 20

উত্তর:


387
float

বা আপনি যদি পুরানো-বিদ্যালয়ে যেতে চান:

real

আপনি ভাসা (53 )ও ব্যবহার করতে পারেন তবে এর অর্থ ফ্লোটের মতো একই জিনিস।

("আসল" ভাসমান (24) এর সমান, ভাসা / ভাসা নয় (53))

দশমিক (X, Y) SQL সার্ভার টাইপ যখন আপনি চান জন্য সঠিক বরং ফ্লোটিং পয়েন্ট (অনুমান করা যেতে পারে) চেয়ে দশমিক নম্বর। এটি সি # "দশমিক" ডেটা টাইপের বিপরীতে, যা 128-বিট ভাসমান পয়েন্ট সংখ্যার মতো।

এমএসএসকিউএল এর ফ্লোট টাইপ । নেট মধ্যে 64-বিট ডাবল টাইপের সমান । (২০১১ সালের আমার মূল উত্তরটি বলেছিল যে ম্যান্টিসার ক্ষেত্রে সামান্য পার্থক্য থাকতে পারে, তবে আমি এটি ২০২০ সালে পরীক্ষা করেছি এবং তারা খুব ছোট এবং খুব বড় সংখ্যক উভয়েরই বাইনারি উপস্থাপনায় 100% সামঞ্জস্যপূর্ণ বলে মনে হচ্ছে - https: / দেখুন আমার পরীক্ষার জন্য /dotnetfiddle.net/wLX5Ox )।

জিনিসগুলিকে আরও বিভ্রান্তিকর করার জন্য, সি # তে একটি "ফ্লোট" কেবল 32-বিট, সুতরাং এটি এসকিউএল-তে রিয়েল / ফ্লোট (24) টাইপ এমএসএসকিউএলের চেয়ে বেশি সমান হবে ভাসা / ভাসা (53) এর চেয়ে।

আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে ... দশমিক পয়েন্টের পরে আপনাকে কেবলমাত্র এক মিটার নির্ভুলতার মধ্যে অক্ষাংশ এবং দ্রাঘিমাংশ উপস্থাপনের জন্য 5 স্থান দরকার হয় এবং ডিগ্রিগুলির জন্য দশমিক পয়েন্টের পূর্বে আপনার কেবল তিনটি অঙ্কের প্রয়োজন হয়। এমএসএসকিউএলে আপনার প্রয়োজনগুলি সবচেয়ে ভাল ফিট করবে (24) বা দশমিক (8,5), এবং সি # তে ফ্লোট ব্যবহার করা যথেষ্ট ভাল, আপনার ডাবল লাগবে না। প্রকৃতপক্ষে, আপনার ব্যবহারকারীরা সম্ভবত যাত্রায় এগিয়ে যাওয়ার জন্য একগুচ্ছ তুচ্ছ সংখ্যার চেয়ে 5 দশমিক জায়গায় গোল করার জন্য আপনাকে ধন্যবাদ জানাবে।


1
তুমি ভাসা বলো, ডেভিড দশমিক বলে, এখন আমি আরও বিভ্রান্ত হয়ে
পড়েছি

আমি সি # তে দ্বিগুণ ব্যবহার করছি এবং এই মানগুলি তাদের নিজ নিজ কলামে অক্ষাংশ এবং দ্রাঘিমাংশ মান হবে।
জায়সফট

1
আমাকে একমত হতে হবে, এবং স্বীকার করতে হবে যে আমি বেইস বন্ধ ছিল। আইবিএম ডিবি 2 বিশ্বে আমার দশমিকের সাথে পরিচয় হয়েছিল, যেখানে দশমিকটি একটি বাস্তব ডেটা টাইপ, আইবিএম প্ল্যাটফর্মে কোডের সমস্ত স্বাদ এবং ডাটাবেস দ্বারা সমর্থিত। এমএস বিশ্বে এটি কোনও আসল ডেটাটাইপ নয়, তবে এটি আইবিএম শিবিরের পাশাপাশি সমর্থিত নয়। কোনও বিভ্রান্তি তৈরির জন্য দুঃখিত।
ডেভএন 59

2
"এমএসএসকিউএল ফ্লোটে। নেট (mant৪ ম্যান্টিসা আইআরসি-র সামান্য পার্থক্য) -তে -৪-বিট ডাবল টাইপের মতো ঠিক নির্ভুলতা নেই, তবে এটি বেশিরভাগ ক্ষেত্রেই যথেষ্ট পরিমাণে ম্যাচ হয়" " আপনি কি এই জন্য একটি রেফারেন্স আছে? যতদূর আমি দেখতে পাচ্ছি, উভয়ই 53 বিট তাত্পর্যপূর্ণ ব্যবহার করে, স্টোরেজের জন্য 64 বিট ব্যবহার করে এবং আইইইই 754 হিসাবে একই বিট লেআউট এবং অর্থ
রাখে

2
@ কোডেকায়েজন (ম্যান্টিসার সামান্য পার্থক্য) দ্বারা উত্থাপিত প্রশ্ন সম্পর্কে আমিও বেশ কৌতূহলী। আপনার কাছে কি এমন একটি রেফারেন্স বা পরীক্ষা রয়েছে যা এর উদাহরণ দেয়?
ম্যাডস রাভন

62

এছাড়াও, দরকারী চার্ট সহ এসকিউএল-সিএলআর টাইপ ম্যাপিংয়ের জন্য এখানে একটি ভাল উত্তর।

পোস্টটি থেকে ( ডেভিড দ্বারা ): এখানে চিত্র বর্ণনা লিখুন


নীচের লিঙ্কটিও ব্যবহারের; এতে উপরোক্ত তথ্যের অতিরিক্ত অতিরিক্ত তথ্য রয়েছে কারণ এটি স্কেলডাটাডার রিডার পদ্ধতি এবং গণনাগুলি (। নেট এবং এসকিউএল টাইপ তুলনা ছাড়াও) ডকস.মাইক্রোসফট
en-

15

ভাসমানটি নিকটতম সমতুল্য।

SQLlbb টাইপ গণনা

ল্যাট / লংয়ের জন্য যেমন ওপি উল্লিখিত হয়েছে।

একটি মিটার অক্ষাংশের 1 / 40,000,000, 1 সেকেন্ডের প্রায় 30 মিটার। ভাসা / ডাবল আপনাকে 15 টি গুরুত্বপূর্ণ চিত্র দেয়। কিছু দ্রুত এবং অদ্ভুত মানসিক পাটিগণিতের সাথে ... রাউন্ডিং / আনুমানিক ত্রুটিগুলি এই ফিল স্টপটির দৈর্ঘ্য হবে -> "।"


1
আপনার স্ক্রিন প্রযুক্তি অ্যাপলকে বিক্রয় করুন এবং বিলিয়ন করুন! (দ্রুত পাটিগণিত আমাকে বলেছে যে আমি আমার কাছে সবচেয়ে চরম রেজোলিউশন শুনেছি, এমনকি উত্তর / দক্ষিণ মেরুর নিকট অক্ষাংশেও; আমার থেকে প্রায় এক বিলিয়ন গুন বেশি।)
জোনাস বাইস্ট্রাম


8

float এসকিউএল সার্ভারে আসলে একটি "ডাবল" (একটি সি # অর্থে) এর যথার্থতা [সম্পাদনা: প্রায়] থাকে।

floatএকটি প্রতিশব্দ হয় float(53)। 53 হ'ল ম্যান্টিসার বিট।

.NET doubleম্যান্টিসার জন্য 54 বিট ব্যবহার করে।


2
আসলে, আইআইআরসি, ডাবল ইন। নেট একটি 52 বিট ম্যান্টিসা এবং 11-বিট এক্সপোঞ্জার ব্যবহার করে।
রিচার্ডাল্টলেন্ট

আমি শঙ্কিত হব; তুমি ঠিক বলছো! আমি ভাবছি অতিরিক্ত বিট দিয়ে এসকিউএল কী করে; এটি ব্যবহারকারীর জন্য ব্যবহৃত হয় না। যদি এটি হয়ে থাকে, তবে घाষ্টাকারী + -308 এর পরিবর্তে + -616 এ যাবে। হয়তো নুল ট্র্যাক?
ইউরো মিশেল্লি

আমি এখন দ্বিধান্বিত. প্রমাণের প্রতিটি অংশ এই ধারণাটিকে নির্দেশ করে যে তারা একই ফর্ম্যাটটি ব্যবহার করে (উইন্ডোজের সমস্ত কিছুর মতো)। তারা কেন করবে না? আমি এসকিউএল সার্ভারের বিটওয়াইজ উপস্থাপনার (স্লোয়ার জন্য সহায়তা পৃষ্ঠা ছাড়াও) একটি নির্দিষ্ট বিবৃতি খুঁজে পাচ্ছি না। আমি যদি কিছু খুঁজে পাই তবে একটি সংশোধন পোস্ট করব।
ইউরো মিশেল্লি

5

এসকিউএল সেভারের জন্য:

দশমিক প্রকারটি 128 বিট স্বাক্ষরযুক্ত নম্বর ফ্লোট একটি 64 বিট স্বাক্ষরযুক্ত নম্বর।

আসল উত্তরটি হ'ল ফ্লোট , আমি দশমিক সম্পর্কে ভুল ছিল।

কারণ আপনি যদি একটি দশমিক ব্যবহার করেন তবে আপনি কখনই দশমিক 64৪ বিট পূরণ করতে পারবেন না।

যদিও আপনি কোনও প্রকার টাইপ ব্যবহার করার চেষ্টা করলে দশমিক আপনাকে ত্রুটি দেয় না।

প্রকারগুলির একটি দুর্দান্ত রেফারেন্স চার্ট এখানে


এখন এটি দুটি আরও পৃথক উত্তরের সাথে আরও বিভ্রান্তিকর: পি
জাইসফট

1
বিভ্রান্ত হবেন না। এই উত্তরটি ভুল। দশমিক একটি বেস -10 প্রকার; ভাসা (এসকিউএল সার্ভার এবং সিএলআরতে) একটি বেস -২ প্রকার।
মাইকেল পেট্রোটা

3

দেখে মনে হচ্ছে আপনি চয়ন বাছাই করতে পারেন। আপনি যদি ভাসা চয়ন করেন তবে আপনি 11 সংখ্যক নির্ভুলতা হারাতে পারেন। যদি এটি গ্রহণযোগ্য হয় তবে এর জন্য যান - স্পষ্টতই লিংক ডিজাইনাররা এটি একটি ভাল ট্রেড অফ বলে মনে করেছিলেন।

তবে, যদি আপনার অ্যাপ্লিকেশনটিতে সেই অতিরিক্ত সংখ্যার প্রয়োজন হয়, দশমিক ব্যবহার করুন। দশমিক (সঠিকভাবে বাস্তবায়ন করা) যাইহোক যাইহোক ফ্লোটের চেয়ে অনেক বেশি নির্ভুল - বেস 10 থেকে বেস 2 এবং পিছনে কোনও অগোছালো অনুবাদ নেই।


এটি অক্ষাংশ এবং দ্রাঘিমাংশের মানগুলি সংরক্ষণ করার জন্য। এটা কি কোন পরিবর্তন আনবে?
জায়সফট

এটি ঠিক ভুল ... এমএসএসকিউএলে ফ্লোট / ফ্লোট (53) এবং সি # তে দ্বিগুণ যথাযথতার 15 সংখ্যার রয়েছে। এগুলি হুবহু এক নয়, তবে যথেষ্ট কাছে। অন্যদিকে, ডেসিমাল, একটি ডাবল সংরক্ষণের জন্য সম্পূর্ণ ওভারকিল, এবং এটি এসকিউএল সার্ভারে সমস্ত গণনার জন্য বেস 2 তে ফিরে যেতে হবে এবং ডাবল হিসাবে সি # তে ফিরে আসতে হবে।
রিচার্ডাল্টলেন্ট

আমি সংশোধন করেছি. আপনি যা বলছেন তা আমার কাছে সঠিক ধারণা দেয়। দশমিক কেবল তখনই অর্থবোধ করে যদি আপনি এটিকে সর্বত্র দশমিক মান হিসাবে রাখেন। আপনি যখন বেস 10 থেকে বেস 2 (এবং পিছনে) রূপান্তর করেন তখন আপনি মান হারাবেন।
ডেভএন 59

-2

একটি এসকিউএল সার্ভারে Floatউপস্থাপন doubleকরে। ভিজ্যুয়াল স্টুডিওতে কোড কোডিং থেকে আপনি একটি প্রমাণ পেতে পারেন। এখানে আমি ঘোষণা করেছেন Overtimeহিসেবে FloatSQL এর যে সার্ভার এবং C # হবে। সুতরাং আমি রূপান্তর করতে সক্ষম

int diff=4;
attendance.OverTime = Convert.ToDouble(diff);

এখানে OverTimeঘোষণা করা হয়float type

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.