ভগ্নাংশের সংখ্যা সংরক্ষণের বিভিন্ন উপায় রয়েছে এবং তাদের প্রত্যেকেরই সুবিধা এবং অসুবিধা রয়েছে।
ভাসমান-পয়েন্টটি এখন পর্যন্ত সর্বাধিক জনপ্রিয় ফর্ম্যাট। এটি একটি চিহ্ন, একটি ম্যান্টিসা এবং একটি স্বাক্ষরিত বেস -২ এক্সপেনশনটিকে পূর্ণসংখ্যার মধ্যে এনকোড করে এবং তাদের একগুচ্ছ বিটগুলিতে প্যাক করে কাজ করে। উদাহরণস্বরূপ, যদি আপনি একটি 32 বিট অংশক হতে পারে 0.5
(যেমন এনকোড 0x88888888
) এবং একটি 32 বিট স্বাক্ষর এক্সপোনেন্ট +3
( 0x00000003
), যা থেকে ডিকোড হবে 4.0
(0.5 * 2 ^ 3
)। ভাসমান-পয়েন্ট নম্বরগুলি দ্রুত, কারণ এগুলি হার্ডওয়্যারে প্রয়োগ করা হয় এবং তাদের যথার্থ আকারের সাথে যথার্থ আকারের স্কেল হয়, এটির সংখ্যাটি যত কম ততই আপনার নিখুঁত নির্ভুলতা, তাই আপেক্ষিক বৃত্তাকার ত্রুটি পরম আকারের সাথে স্থির থাকে। দৈর্ঘ্য, শব্দ চাপ স্তর, আলোর স্তর ইত্যাদির মতো অবিচ্ছিন্ন ডোমেন থেকে নমুনাযুক্ত মানগুলির জন্য ভাসমানগুলি দুর্দান্ত এবং এর কারণে এগুলি সাধারণত অডিও এবং চিত্র প্রক্রিয়াকরণে ব্যবহৃত হয়, পাশাপাশি পরিসংখ্যান বিশ্লেষণ এবং পদার্থবিজ্ঞানের সিমুলেশনগুলির ক্ষেত্রেও ব্যবহৃত হয়। তাদের বৃহত্তম নেতিবাচকতা হ'ল এগুলি সঠিক নয়, অর্থাত্ তারা গোলাকার ত্রুটির প্রবণ এবং তারা সমস্ত দশমিক ভগ্নাংশকে সঠিকভাবে উপস্থাপন করতে পারে না। সমস্ত মূলধারার প্রোগ্রামিং ভাষার কোনও ধরণের ভাসমান পয়েন্ট রয়েছে।
নির্দিষ্ট বিন্দুযথেষ্ট বড় পূর্ণসংখ্যা ব্যবহার করে এবং স্পষ্টভাবে ভগ্নাংশের অংশের জন্য তাদের বিটের একটি অংশ সংরক্ষণ করে কাজ করে। উদাহরণস্বরূপ, একটি 24.8 বিট স্থির-পয়েন্ট সংখ্যা পূর্ণসংখ্যার অংশের জন্য 24 বিট (চিহ্ন সহ) সংরক্ষণ করে এবং ভগ্নাংশের অংশের জন্য 8 বিট সংরক্ষণ করে। এই সংখ্যাটি 8 টি বিটের মাধ্যমে ডান স্থানান্তরিত করে আমাদের পূর্ণসংখ্যার অংশ দেয়। হার্ডওয়্যার ফ্লোটিং-পয়েন্ট ইউনিটগুলি অসাধারণ বা তাদের পূর্ণসংখ্যার অংশগুলির তুলনায় কমপক্ষে ধীরে ধীরে জনপ্রিয় হওয়ার সময় স্থির-পয়েন্ট নম্বরগুলি ব্যবহৃত হত। স্থির-পয়েন্ট সংখ্যাগুলি নির্ভুলতার দিক দিয়ে পরিচালনা করা কিছুটা সহজ (যদিও এটির কারণটি বিবেচনা করা সহজ কারণেই), তারা অন্য সকল ক্ষেত্রে ভাসমানের চেয়ে নিকৃষ্ট - তাদের কম নির্ভুলতা, একটি ছোট পরিসর এবং অতিরিক্ত কারণ সংক্রামিত শিফ্টের জন্য গণনা সংশোধন করার জন্য অপারেশনগুলি প্রয়োজন, ফিক্স-পয়েন্ট গণিত আজ প্রায়শই ভাসমান-পয়েন্ট গণিতের চেয়ে ধীর হয়।
দশমিক প্রকারগুলি বেশিরভাগ ফ্লোট বা স্থির-পয়েন্ট সংখ্যার মতো কাজ করে তবে তারা একটি দশমিক সিস্টেম ধরে নেয়, এটি হল তাদের ক্ষতিকারক (অন্তর্নিহিত বা স্পষ্ট) 10-এর পাওয়ার-অফ -2 নয়, পাওয়ার-অফ -10 এনকোড করে। একটি দশমিক সংখ্যা উদাহরণস্বরূপ, এর একটি ম্যান্টিসা 23456
এবং একটি ঘনিষ্ঠকে এনকোড -2
করতে পারে এবং এটি প্রসারিত হবে234.56
। দশমিক, কারণ পাটিগণিতগুলি সিপিইউতে শক্ত ওয়্যার্ড হয় না, এটি ভাসমানের চেয়ে ধীর হয় তবে দশমিক সংখ্যার সাথে জড়িত এমন কোনও ক্ষেত্রেই এটি আদর্শ এবং সেই সংখ্যাগুলি যথাযথ হওয়া দরকার, সুসংজ্ঞায়িত দাগগুলিতে গোলাকার ঘটে - আর্থিক গণনা, স্কোরবোর্ড ইত্যাদির কিছু প্রোগ্রামিং ভাষার দশমিক প্রকারের মধ্যে সেগুলি অন্তর্নির্মিত থাকে (যেমন সি #), অন্যদের সেগুলি প্রয়োগ করার জন্য লাইব্রেরি প্রয়োজন। মনে রাখবেন যে দশমিকগুলি দশমিক অবিচ্ছেদ্য দশমিক ভগ্নাংশকে সঠিকভাবে উপস্থাপন করতে পারে, তবে তাদের নির্ভুলতা ভাসমান-পয়েন্ট সংখ্যাগুলির চেয়ে ভাল আর কিছু নয়; দশমিক সংখ্যা বাছাইয়ের অর্থ হ'ল আপনি সংখ্যার যথাযথ উপস্থাপনা পান যা দশমিক সিস্টেমে হুবহু উপস্থাপন করা যায় (ঠিক যেমন ভাসমানগুলি বাইনারি ভগ্নাংশকে ঠিক উপস্থাপন করতে পারে)।
যৌক্তিক সংখ্যাগুলি একটি সংখ্যক এবং একটি গণক সঞ্চয় করে সাধারণত সাধারণত কিছু ধরণের বিগানাম পূর্ণসংখ্যার প্রকার (কম্পিউটারের মেমরির সীমাবদ্ধতার অনুমতি অনুসারে বৃহত্তর বৃদ্ধি পেতে পারে এমন একটি সংখ্যার প্রকার) ব্যবহার করে। এই গুচ্ছের বাইরে থাকা একমাত্র ডেটা টাইপ যা সঠিকভাবে সংখ্যার মতো মডেল করতে পারে 1/3
বা তার 3/17
পাশাপাশি তাদের উপর ক্রিয়াকলাপগুলি - অন্যান্য ডেটা ধরণের মত নয়, যুক্তিযুক্ত জিনিসগুলির মতো সঠিক ফলাফল আনবে3 * 1/3
। গণিতটি বেশ সোজা, যদিও একটি দক্ষ ফ্যাক্টরিং অ্যালগরিদম উপস্থিত হওয়া বরং চ্যালেঞ্জিং। কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজগুলিতে সেগুলি যুক্তিযুক্ত ধরণের থাকে (যেমন কমন লিস্প)। যৌক্তিকতার ডাউনসাইডগুলি অন্তর্ভুক্ত করে যে তারা ধীর গতির (অনেক ক্রিয়াকলাপ ভগ্নাংশ হ্রাস এবং তাদের উপাদানগুলি ফ্যাক্টর করার প্রয়োজন), এবং অনেকগুলি সাধারণ ক্রিয়াকলাপ বাস্তবায়ন করা শক্ত বা অসম্ভব এবং বেশিরভাগ বাস্তবায়ন যখন ঘটে থাকে তখন (যেমন যখন আপনি কল করবেন) তত্ক্ষণিকভাবে যুক্তিটিকে অবনমিত করে দেবে sin()
একটি যৌক্তিক উপর)।
বিসিডি (বাইনারি কোডেড দশমিক) স্বতন্ত্র অঙ্কগুলি এনকোড করতে "নিবলস" (4 বিটের গ্রুপ) ব্যবহার করে; যেহেতু একটি স্তন্যপায়ী 16 টি পৃথক মান ধরে রাখতে পারে তবে দশমিক সংখ্যার জন্য কেবল 10 টি প্রয়োজন, তাই পিচ্ছিল্যে 6 টি "অবৈধ" মান রয়েছে। দশমিকের মতো, বিসিডি সংখ্যা দশমিক-হুবহু অর্থাত্ দশমিক সংখ্যার উপর সম্পাদিত গণনাগুলি ঠিক সেভাবেই কাজ করে যদি আপনি সেগুলি কলম এবং কাগজ ব্যবহার করে করেন। বিসিডির জন্য গাণিতিক নিয়মগুলি কিছুটা আনাড়ি, তবে উলটো দিকটি হ'ল এগুলি এম্বেডেড সিস্টেমের মতো স্বল্প-সংস্থান পরিবেশের জন্য বিশেষত আকর্ষণীয় অন্যান্য ফর্ম্যাটগুলির চেয়ে স্ট্রিতে রূপান্তর করা সহজ is
স্ট্রিংস , হ্যাঁ, সরল পুরানো স্ট্রিংগুলি ভগ্নাংশের সংখ্যা উপস্থাপন করতেও ব্যবহার করা যেতে পারে। প্রযুক্তিগতভাবে, এটি বিসিডির সাথে খুব অনুরূপ, কেবলমাত্র একটি স্পষ্ট দশমিক ডট আছে এবং আপনি দশমিক অঙ্কের জন্য একটি পূর্ণ বাইট ব্যবহার করেন। এই হিসাবে, ফর্ম্যাটটি অপব্যয়যোগ্য (256 টির মধ্যে কেবল 11 টি মান ব্যবহৃত হয়) তবে বিসিডির তুলনায় পার্স করা এবং জেনারেট করা সহজ। অতিরিক্ত হিসাবে, সমস্ত ব্যবহৃত মানগুলি "সন্দেহজনক", ক্ষতিকারক এবং প্ল্যাটফর্ম-নিরপেক্ষ, স্ট্রিং-এনকোডেড নম্বরগুলি সমস্যা ছাড়াই নেটওয়ার্কগুলিতে ভ্রমণ করতে পারে। স্ট্রিংগুলিতে সরাসরি পাটিগণিতের সন্ধান পাওয়া অস্বাভাবিক, তবে এটি সম্ভব এবং আপনি যখন এটি করেন, সেগুলি অন্যান্য দশমিক বিন্যাসের (দশমিক এবং বিসিডি) ঠিক ঠিক দশমিক-হুবহু।