এই কাজগুলি মোটেই তুচ্ছ নয়! এটি আইইইই ভাসমান পয়েন্ট উপস্থাপনার একটি সম্পত্তি যা ইনটফ্লোয়ার = ⌊⋅⌋ যদি প্রশ্নের মধ্যে সংখ্যাগুলির পরিমাণটি খুব কম হয় তবে ইন্টার (ফ্লোর (২.৩)) হতে পারে যেখানে বিভিন্ন উপস্থাপনা সম্ভব be
এটি কেন এই ব্যাপ্তিতে কাজ করে এই পোস্টটি ব্যাখ্যা করে ।
দ্বিগুণ, আপনি কোনও সমস্যা ছাড়াই 32 বিট পূর্ণসংখ্যার প্রতিনিধিত্ব করতে পারেন। সেখানে না পারেন, কোনো rounding বিষয় হতে। আরও স্পষ্টভাবে, ডাবলস 2 53 এবং -2 53 এর মধ্যে এবং এর মধ্যে সমস্ত পূর্ণসংখ্যার প্রতিনিধিত্ব করতে পারে ।
সংক্ষিপ্ত বিবরণ : একটি ডাবল 53 বাইনারি অঙ্ক পর্যন্ত সঞ্চয় করতে পারে। যখন আপনার আরও প্রয়োজন হয়, তখন ডানদিকে শূন্যের সাথে সংখ্যাটি প্যাড করা হয়।
এটি অনুসরণ করে যে 53 টি হ'ল বৃহত্তম সংখ্যা যা প্যাডিং ছাড়াই সংরক্ষণ করা যায়। স্বাভাবিকভাবেই, সমস্ত (পূর্ণসংখ্যার) সংখ্যার কম সংখ্যার প্রয়োজন সঠিকভাবে সংরক্ষণ করা যেতে পারে।
একটিতে 111 যুক্ত করা (বাদ দেওয়া) 111 (53 টি) এর ফলস্বরূপ 100 ... 000, (53 জিরো) পাওয়া যায়। যেমনটি আমরা জানি, আমরা 53 টি সংখ্যা সংরক্ষণ করতে পারি, যা ডানদিকের শূন্য প্যাডিং তৈরি করে।
এখান থেকে 2 53 আসে।
আরও বিশদ: আইইইই -754 ফ্লোটিং পয়েন্ট কীভাবে কাজ করে তা আমাদের বিবেচনা করা দরকার।
1 bit 11 / 8 52 / 23 # bits double/single precision
[ sign | exponent | mantissa ]
তারপরে সংখ্যাটি নিম্নরূপ গণনা করা হয় (এখানে বিশেষ অপ্রাসঙ্গিক বিষয়গুলি বাদ দিয়ে):
-1 চিহ্ন × 1.মন্তিসা × 2 এক্সপোনেন্ট - পক্ষপাতিত্ব
যেখানে পক্ষপাত = 2 ঘনিষ্ঠ - 1 - 1 , অর্থাৎ 1023 এবং 127 যথাক্রমে ডাবল / একক নির্ভুলতার জন্য।
2 এক্স দ্বারা গুণিত করে সমস্ত বিট এক্স স্থানকে বামে সরিয়ে নিয়ে যাওয়া জেনে যাওয়া সহজ যে কোনও সংখ্যার মান্টিসায় সমস্ত বিট থাকতে হবে যা দশমিক পয়েন্টের ডানদিকে শূন্য হয়।
শূন্য ব্যতীত যে কোনও পূর্ণসংখ্যার বাইনারিতে নিম্নলিখিত ফর্মটি থাকে:
1x ... x যেখানে x -es এমএসবি এর ডানদিকে বিটগুলি উপস্থাপন করে (সবচেয়ে উল্লেখযোগ্য বিট)।
যেহেতু আমরা শূন্যকে বাদ দিয়েছি, সেখানে সর্বদা একটি এমএসবি থাকবে — যার কারণে এটি সঞ্চয় করা হয়নি। পূর্ণসংখ্যা সংরক্ষণ করার জন্য, আমাদের অবশ্যই এটি পূর্বোক্ত আকারে আনতে হবে: -1 চিহ্ন × 1.মন্তিসা × 2 এক্সপোনেন্ট - পক্ষপাতিত্ব ।
এটি এমএসবি এর বাম দিকে কেবল এমএসবি না হওয়া পর্যন্ত দশমিক পয়েন্টের উপরে বিটগুলি স্থানান্তর হিসাবে একই কথা বলছে। দশমিক বিন্দুর ডানদিকে সমস্ত বিটগুলি মন্টিসায় সংরক্ষণ করা হয়।
এটি থেকে আমরা দেখতে পাচ্ছি যে আমরা এমএসবি বাদে সর্বাধিক ৫২ টি বাইনারি সংখ্যা সঞ্চয় করতে পারি।
এটি অনুসরণ করে যে সমস্ত বিট সুস্পষ্টভাবে সঞ্চিত সেখানে সর্বাধিক সংখ্যা
111(omitted)111. that's 53 ones (52 + implicit 1) in the case of doubles.
এর জন্য, আমাদের এক্সপোনেন্টটি সেট করতে হবে, যে দশমিক পয়েন্টটি 52 জায়গায় স্থানান্তরিত হবে। আমরা যদি একের সাহায্যে অতিরিক্ত বাড়িয়ে তুলি তবে দশমিক পয়েন্টের পরে আমরা ডান বামে অঙ্কটি জানতে পারি না।
111(omitted)111x.
কনভেনশন অনুসারে, এটি ০. পুরো মান্টিসাকে শূন্যে সেট করে, আমরা নিম্নলিখিত সংখ্যাটি পাই:
100(omitted)00x. = 100(omitted)000.
এটি 1 এর পরে 53 জিরো, 52 টি সঞ্চিত এবং 1 জন যোগের কারণে যুক্ত হয়েছে।
এটি 2 53 প্রতিনিধিত্ব করে , যা সীমানা চিহ্নিত করে (উভয় নেতিবাচক এবং ধনাত্মক) যার মধ্যে আমরা সঠিকভাবে সমস্ত পূর্ণসংখ্যা উপস্থাপন করতে পারি। যদি আমরা একটিতে 2 53 যোগ করতে চাই, তবে আমাদের একের সাথে অন্তর্নিহিত শূন্য (দ্বারা চিহ্নিত x
) স্থাপন করতে হবে, তবে এটি অসম্ভব।
math.floor
v2.6 এ একটি ভাসা ফেরত দেয় তবে এটি v3 এর মধ্যে একটি পূর্ণসংখ্যা ফেরত দেয় । এই মুহুর্তে (ওপি'র প্রায় ছয় বছর পরে), এই সমস্যাটি খুব কমই প্রদর্শিত হতে পারে।