স্থির পয়েন্ট বনাম ভাসমান পয়েন্ট সংখ্যা


109

আমি গুগল জুড়ে এগুলি সম্পর্কে সংজ্ঞাগুলি পড়ার জন্য কঠিন পয়েন্ট এবং ভাসমান পয়েন্ট সংখ্যা বুঝতে পারি না। তবে আমি যা পড়েছি তা এগুলি আসলে কী সেগুলির একটি সহজ যথেষ্ট ব্যাখ্যা সরবরাহ করে না। আমি উদাহরণ সহ একটি সাধারণ ব্যাখ্যা পেতে পারি?


একটি ভাল সংজ্ঞা খুঁজে পেতে আমারও সমস্যা হচ্ছে। আমি যে বিষয়গুলির প্রধান সন্ধান করছি তা এই ফলাফলগুলি বোঝার জন্য আমাকে সাহায্য করার জন্য একটি জিনিস: 3.11 + 42.0 = 45.110001 (45.11 নয়), 3.12 + 42.0 = 45.119999 (45.12 নয়), 3.15 + 42.0 = 45.150002 (45.15 নয়)।
বার্ট এস

1
আমি এই একটি প্রাসঙ্গিক আলোচনা (বিশেষ করে ভাসমান সংখ্যার যাত্রীর সঙ্গের নিজলটবহর বর্ণনা এবং স্থির বিন্দু সাথে উন্নত স্পষ্টতা এবং কেন আপনি কখনই একটি float হিসাবে descibe টাকা চাই চাই হয়। Stackoverflow.com/questions/6320209/...
অ্যান্ড্রু নর্মান

এলোমেলো লিঙ্ক যেখানে বিষয়গুলি উল্লেখ করা হয়েছে "ওপেনজিএল S ওপেনজিএল ইএসে ভাসমান-পয়েন্ট এবং ফিক্সড-পয়েন্ট সিস্টেমগুলির জন্য প্রোফাইল এবং ইজিএল-স্পেসিফিকেশন ..."
রেড পিআর

উত্তর:


145

একটি নির্দিষ্ট বিন্দু সংখ্যায় একটি নির্দিষ্ট সংখ্যক বিট (বা অঙ্ক) থাকে যা সংখ্যার অংশের জন্য (দশমিক পয়েন্টের বাম দিকের অংশে) এবং একটি নির্দিষ্ট সংখ্যক বিটকে ভগ্নাংশের অংশের জন্য (অংশটি দশমিকের ডানদিকে) সংরক্ষিত থাকে পয়েন্ট)। আপনার সংখ্যাটি কত বড় বা ছোট তা বিবেচনাধীন, এটি প্রতিটি অংশের জন্য সর্বদা একই সংখ্যক বিট ব্যবহার করবে। উদাহরণস্বরূপ, যদি আপনার স্থির পয়েন্ট ফর্ম্যাটটি দশমিক হয় IIIII.FFFFFতবে আপনি উপস্থাপন করতে পারেন এমন বৃহত্তম সংখ্যাটি 99999.99999এবং সবচেয়ে ছোট শূন্য সংখ্যা হবে 00000.00001। এই জাতীয় সংখ্যার প্রক্রিয়া করে এমন প্রতিটি বিট কোডের দশমিক বিন্দু কোথায় তা সম্পর্কে অন্তর্নির্মিত জ্ঞান থাকতে হবে।

একটি ভাসমান পয়েন্ট সংখ্যাটি পূর্ণসংখ্যার অংশ বা ভগ্নাংশের অংশের জন্য নির্দিষ্ট সংখ্যক বিট সংরক্ষণ করে না। এর পরিবর্তে এটি সংখ্যার জন্য একটি নির্দিষ্ট বিট সংখ্যা (নামক সংরক্ষণ করে অংশক বা significand ) এবং বিট একটি নির্দিষ্ট সংখ্যক বলতে যেখানে যে সংখ্যা দশমিক স্থান অস্ত (যাকে বলা হয় মধ্যে এক্সপোনেন্ট )। সুতরাং ভাসমানের জন্য সংরক্ষিত 2 সংখ্যার সাথে 10 সংখ্যার দশক সহকারে একটি ভাসমান পয়েন্ট নম্বরটি একটি বৃহত্তম মান 9.9999999e+50এবং একটি ক্ষুদ্রতম অ-শূন্য মানের প্রতিনিধিত্ব করতে পারে 0.0000001e-49


8
ভাল আপনি ভুলে যাচ্ছেন যে ভাসমান পয়েন্ট সংখ্যা প্রায় সর্বদা স্বাক্ষরিত হয়, তাই সর্বনিম্ন মানটি সত্যই হবে -9.9999999e+50
ব্রায়ান গর্ডন

4
এছাড়াও এক্সপোনেন্ট বায়াসিং রয়েছে যাতে আপনি ১,০০,০০০ থেকে ১,০০,০০১ এর তুলনায় 0 এবং 1 এর মধ্যে বিস্তৃত মূল্যবান মান উপস্থাপন করতে পারেন। এবং ভাসমান পয়েন্ট অপারেশনগুলির সাথে প্রচুর জটিলতা রয়েছে যা নিশ্চিত হয় যে আপনি 0 টি রিপোর্ট করবেন না তা নিশ্চিত করার জন্য যখন পক্ষপাত যথাযথতা বাড়াতে পর্যাপ্ত না হয় তখন দুটি খুব একই সংখ্যার মধ্যে পার্থক্য হিসাবে উপস্থিত হয়।
ব্রায়ান গর্ডন

28
@ ব্রায়ান গর্ডন: আমি সাইন বিটগুলি ভুলে যাইনি; একটি সাধারণ বিবরণ পেতে এবং সর্বনিম্ন / সর্বাধিক এবং ক্ষুদ্রতম / বৃহত্তমের মধ্যে পার্থক্য সম্পর্কে উদ্বিগ্ন হওয়ার দরকার নেই বলে আমি ইচ্ছাকৃতভাবে সেগুলি উপেক্ষা করেছি । আমি ইচ্ছাকৃতভাবে এক্সপোনেন্ট বাইসিং (যে কোনও দুটি সংখ্যার মধ্যে পৃথক মানের সংখ্যার সাথে কোনও সম্পর্ক রাখে না) ছেড়ে দিয়েছি, এনএএন, ইনফিনিটিস, নরমালাইজিং, ধীরে ধীরে আন্ডারফ্লো, স্বাক্ষরিত শূন্যগুলি, বেশিরভাগ ভাসমান বাইনারি হওয়ার বিষয়টি (যা প্রথম বিটকে অনুমতি দেয়) ম্যান্টিসার বাইরে রেখে দেওয়া), এবং আরও অনেকগুলি বিষয় যা ধারণাটি চিত্রিত করার জন্য অপ্রয়োজনীয়।
গ্যাবে

2
সর্বনিম্ন সংখ্যার স্থির পয়েন্টের জন্য কাটফফ কেন 00000.00001? আমি 00000.00000পরিবর্তে দেখতে আশা করছি । এছাড়াও, আপনার কাছে কি এমন কোনও রেফারেন্স রয়েছে যা স্থির-পয়েন্ট নম্বর সম্পর্কে আরও বিশদে যায়?
নিকোলাস মিলার

4
@ নিকমিলার: বিভ্রান্তির জন্য দুঃখিত, তবে আমি শূন্য নম্বরের কথা বলছিলাম। আমার উদাহরণ ফর্ম্যাটটি 0, 0.00001, 0.00002, ..., 99999.99998, 99999.99999 উপস্থাপন করতে পারে।
গাব

31

একটি নির্দিষ্ট পয়েন্ট সংখ্যাটির অর্থ হ'ল দশমিক বিন্দুর পরে অঙ্কের একটি নির্দিষ্ট সংখ্যা থাকে। একটি ভাসমান পয়েন্ট সংখ্যা দশমিক বিন্দুর পরে অঙ্কের বিচিত্র সংখ্যার জন্য অনুমতি দেয়।

উদাহরণস্বরূপ, যদি আপনার দশকের দশকের পরে ঠিক চার অঙ্কের দরকার হয় এমন সংখ্যাগুলি সংরক্ষণের একটি উপায় থাকে তবে তা স্থির পয়েন্ট point এই বাধা ছাড়াই এটি ভাসমান পয়েন্ট।

প্রায়শই, যখন নির্দিষ্ট পয়েন্ট ব্যবহৃত হয়, প্রোগ্রামার আসলে একটি পূর্ণসংখ্যার ব্যবহার করে এবং তারপরে অনুমান করে যে কিছু সংখ্যার দশমিক বিন্দুর বাইরে are উদাহরণস্বরূপ, আমি যথাযথতার দুটি অঙ্ক রাখতে চাইব, সুতরাং 100 টির মানটির অর্থ আসলে 1.00, 101 এর অর্থ 1.01, 12345 অর্থ 123.45 ইত্যাদি etc.

ভাসমান পয়েন্ট সংখ্যাগুলি আরও সাধারণ উদ্দেশ্য কারণ তারা খুব অল্প বা খুব বড় সংখ্যক একই উপায়ে প্রতিনিধিত্ব করতে পারে তবে দশমিক স্থান যেখানে যায় সেখানে অতিরিক্ত সঞ্চয়স্থান রাখার ক্ষেত্রে একটি ছোট জরিমানা রয়েছে।


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

2
ভাসমান স্থানে এক্সপোঞ্জার মানগুলির সম্ভাব্য ব্যবহারের কারণে কম্পিউটার সিস্টেমগুলি মানক সংখ্যার প্রত্যাশা নিয়ে সমস্যা সৃষ্টি করতে পারে
অ্যান্ড্রু নরম্যান

5

আমার বোঝাপড়া থেকে, নির্দিষ্ট-পয়েন্ট গণিত পূর্ণসংখ্যা ব্যবহার করে সম্পন্ন করা হয়। যেখানে দশমিক অংশটি বিটগুলির একটি নির্দিষ্ট পরিমাণে সংরক্ষণ করা হয়, বা দশমিক নির্ভুলতার কতগুলি অঙ্কের প্রয়োজন তা দ্বারা সংখ্যাটি গুণিত হয়।

উদাহরণস্বরূপ, যদি সংখ্যাটি 12.34সংরক্ষণ করার প্রয়োজন হয় এবং দশমিক পয়েন্টের পরে আমাদের কেবল দুটি অঙ্কের নির্ভুলতার প্রয়োজন হয় তবে 100এটি পেতে সংখ্যাটি বহুগুণ হয় 1234। এই নম্বরটিতে গণিত করার সময়, আমরা এই নিয়ম সেটটি ব্যবহার করব। এই সংখ্যায় যোগ করা 5620বা যুক্ত 56.20করা 6854ডেটা বা 68.54

আমরা যদি একটি নির্দিষ্ট পয়েন্টের দশমিক অংশ গণনা করতে চাই, আমরা মডুলো (%) অপরেন্ড ব্যবহার করি use

12.34 (সিউডোকোড):

v1 = 1234 / 100 // get the whole number
v2 = 1234 % 100 // get the decimal number (100ths of a whole).
print v1 + "." + v2 // "12.34"

ফ্লোটিং পয়েন্ট নম্বর প্রোগ্রামিংয়ে সম্পূর্ণ ভিন্ন গল্প। ভাসমান পয়েন্ট সংখ্যাগুলির বর্তমান মানটি সংখ্যার ডেটার জন্য 23 বিট, সূচকটির জন্য 8 টি বিট এবং 1 এর জন্য চিহ্ন ব্যবহার করে। এ সম্পর্কে আরও তথ্যের জন্য এই উইকিপিডিয়া লিঙ্কটি দেখুন।


3

'নির্দিষ্ট পয়েন্ট' শব্দটি অনুরূপভাবে বোঝায় যেখানে সংখ্যার প্রতিনিধিত্ব করা হয়, পরে নির্দিষ্ট সংখ্যার পরে এবং কখনও কখনও দশমিক বিন্দুর আগে। ভাসমান-পয়েন্ট উপস্থাপনের সাথে, দশমিক পয়েন্টের স্থান সংখ্যার উল্লেখযোগ্য সংখ্যার তুলনায় 'ভাসমান' করতে পারে can উদাহরণস্বরূপ, অভিন্ন দশমিক পয়েন্ট প্লেসমেন্ট কনভেনশন সহ একটি নির্দিষ্ট পয়েন্ট উপস্থাপনা 123.45, 1234.56, 12345.67, ইত্যাদি সংখ্যার প্রতিনিধিত্ব করতে পারে, যেখানে একটি ভাসমান-পয়েন্ট উপস্থাপনার পাশাপাশি 1.234567, 123456.7, 0.00001234567, 1234567000000000 ইত্যাদি উপস্থাপন করতে পারে etc.


-6

123.456789 নম্বরটি ধরুন

  • পূর্ণসংখ্যা হিসাবে, এই সংখ্যাটি হবে 123
  • একটি নির্দিষ্ট পয়েন্ট হিসাবে (২), এই সংখ্যাটি হবে 123.46 (ধরে নিলে আপনি এটি চারপাশে করেছেন)
  • ভাসমান পয়েন্ট হিসাবে, এই সংখ্যাটি 123.456789 হবে

ভাসমান বিন্দু আপনাকে নির্ভুলতার সাথে সর্বাধিক প্রতিটি সংখ্যা উপস্থাপন করতে দেয়। স্থির করা কম সুনির্দিষ্ট, তবে কম্পিউটারের জন্য সহজ ..


11
আপনি নির্ভুলতার সাথে কোন সংখ্যা লিখতে পারেন তা ভাসমান পয়েন্ট, পূর্ণসংখ্যা বা স্থির বিন্দুতে লিখিত কিনা তার সাথে সম্পর্কিত নয়। এটি আপনার উপলব্ধ উল্লেখযোগ্য সংখ্যার সাথে সম্পর্কিত। উদাহরণস্বরূপ, INT_MAX হল এমন একটি সংখ্যা যা হুবহু একটি ইন্ট হিসাবে উপস্থাপিত হতে পারে, তবে একটি ফ্লোট হিসাবে নয় কারণ তাদের কাছে সঠিকভাবে উপস্থাপন করার জন্য 31 বিটস যথাযথতা নেই।
কিয়ান

1
সংযুক্ত নম্বরটি পরিচালনা করতে এর আকার যতক্ষণ না স্থির হয় ততক্ষণ সুনির্দিষ্ট। আপনি যখন নির্দিষ্ট পয়েন্ট সংখ্যা সহ গণিত করেন, তখন যখন গণনার দশমিক সীমা ছাড়িয়ে যায় তখন গণনা হয়। ভাসমান পয়েন্টের সাহায্যে আপনি খুব বড় সংখ্যার সাথে খুব অল্প সংখ্যক যুক্ত করলে আপনি একটি খুব সঠিক সংখ্যার মান পেতে পারেন। যখন এটি ঘটে তখন গোলগুলি ছাড়াই অঙ্কগুলি হারিয়ে যায়
অ্যান্ড্রু নরম্যান

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