উদাহরণস্বরূপ, ডলারের সাথে আপনার কখনই $ 0.01 এর চেয়ে কম পরিমাণের নির্ভুলতা নেই
ওহ সত্যিই?
আইইইই 754 ভাসমান পয়েন্ট নম্বর হিসাবে আপনার কেন মুদ্রা সংরক্ষণ করা উচিত নয় সেই বয়সের সমস্যা।
আইইইই 754 ভাসমান পয়েন্ট সংখ্যাগুলিতে বিনা দ্বিধায় ইঞ্চি সঞ্চয় করুন । আপনি কীভাবে প্রত্যাশা করবেন সেগুলি তারা সুনির্দিষ্টভাবে সঞ্চয় করে।
আইইইইই 754 ভাসমান বিন্দুতে আপনি যে পরিমাণ টাকার টিকিট সংরক্ষণ করতে পারেন যা কোনও শাসককে একটি ইঞ্চির ভগ্নাংশে বিভক্ত করে তা সঞ্চয় করে নির্দ্বিধায় অনুগ্রহ করে দয়া করে ।
কেন? কারণ আপনি যখন আইইইই 754 ব্যবহার করেন তখন আপনি এটি স্টোর করে রাখছেন।
ইঞ্চি সম্পর্কে জিনিস তারা অর্ধেক বিভক্ত। বেশিরভাগ ধরণের মুদ্রার বিষয় হ'ল তারা দশমীতে বিভক্ত (কিছু ধরণের নয় তবে চলুন মনোনিবেশিত থাকুন)।
এই পার্থক্যটি সমস্ত বিভ্রান্তিকর হবে না, বেশিরভাগ প্রোগ্রামিং ভাষার জন্য, আইইইই 754 এর ভাসমান পয়েন্ট সংখ্যাগুলি থেকে ইনপুট এবং আউটপুট দশমিকগুলিতে প্রকাশ করা হয়! যেটি খুব আশ্চর্যের কারণ তারা দশমিক in
এ কারণে আপনি কখনই কম্পিউটারটিকে স্টোর করতে বলার সময় বিটগুলি কী অদ্ভুত জিনিসগুলি করে তা কখনই দেখতে পাবেন না 0.1
। আপনি কেবল অদ্ভুততা দেখবেন যখন আপনি এর বিরুদ্ধে গণিত করবেন এবং এতে অদ্ভুত ত্রুটি রয়েছে।
থেকে জোশ ব্লচ এর কার্যকর জাভা :
System.out.println(1.03 - .42);
উত্পাদন 0.6100000000000001
এটি সম্পর্কে সবচেয়ে বেশি যা বলা হচ্ছে তা 1
ডানদিকে বসে থাকা নয় । এটি অদ্ভুত সংখ্যা যা এটি পেতে ব্যবহার করা উচিত। সর্বাধিক জনপ্রিয় উদাহরণ ব্যবহার করার পরিবর্তে 0.1
, আমাদের এমন একটি উদাহরণ ব্যবহার করতে হবে যা সমস্যাটি দেখায় এবং এটি গোপন করে এমন গোলটিকে এড়িয়ে চলে।
উদাহরণস্বরূপ, কেন এই কাজ করে?
System.out.println(.01 - .02);
উত্পাদন -0.01
কারণ আমরা ভাগ্যবান হয়েছি।
আমি এমন সমস্যাগুলি ঘৃণা করি যা নির্ণয় করা শক্ত কারণ আমি মাঝে মাঝে "ভাগ্যবান" হয়ে যাই।
আইইইই 754 কেবলমাত্র 0.1 নির্দিষ্টভাবে সঞ্চয় করতে পারে না। তবে আপনি যদি এটি 0.1 সঞ্চয় করতে বলে থাকেন এবং তারপরে এটি মুদ্রণ করতে বলেন তবে এটি 0.1 প্রদর্শিত হবে এবং আপনি সবকিছু ঠিকঠাক মনে করবেন। এটি ভাল নয়, তবে আপনি এটি দেখতে পারবেন না কারণ এটি 0.1 এর দিকে ফিরে পেতে গোলাকার।
কিছু লোক এই ত্রুটিগুলি গোলকে ত্রুটিযুক্ত বলে অন্যদের থেকে হেককে বিভ্রান্ত করে। না, এগুলি গোলাকার ত্রুটি নয়। রাউন্ডিং যা করা উচিত তা করছে এবং দশমিক নয় যা ডেসিমাল নয় এমনটি পরিণত করছে যাতে এটি স্ক্রিনে মুদ্রণ করতে পারে।
তবে এটি নম্বরটি কীভাবে প্রদর্শিত হয় এবং কীভাবে এটি সংরক্ষণ করা হয় তার মধ্যে মেলে না। রাউন্ডিং হওয়ার পরে ত্রুটি ঘটেনি। এটি তখন ঘটেছিল যখন আপনি এমন একটি সিস্টেমে একটি নম্বর স্থাপন করার সিদ্ধান্ত নিয়েছিলেন যা এটি সঠিকভাবে সঞ্চয় করতে পারে না এবং ধরে নিয়েছিল যে এটি যখন ছিল না তখন এটি সুনির্দিষ্টভাবে সংরক্ষণ করা হচ্ছে।
কেউ প্রত্যাশা করে না a কোনও ক্যালকুলেটরে সুনির্দিষ্টভাবে সঞ্চয় করতে পারে এবং তারা এটি দিয়ে ঠিকঠাক কাজ করতে পারে। সুতরাং সমস্যা এমনকি নির্ভুলতা সম্পর্কে নয়। এটি প্রত্যাশিত নির্ভুলতা সম্পর্কে। কম্পিউটারগুলি 0.1
আমাদের ক্যালকুলেটরগুলির মতো একই দশমাংশ প্রদর্শন করে , তাই আমরা আশা করি যে তারা আমাদের ক্যালকুলেটরগুলি যেভাবে করেন তার মতো দশমাংশটি নিখুঁতভাবে সংরক্ষণ করবেন। তারা না। যেটি আশ্চর্যজনক, যেহেতু কম্পিউটারগুলি বেশি ব্যয়বহুল।
আমি আপনাকে মেলে না দেখায়:
নোট করুন যে 1/2 এবং 0.5 লাইন পুরোপুরি আপ। তবে ০.১ সাইন আপ করে না। নিশ্চিত হয়ে নিন যে আপনি 2 দ্বারা বিভাজন অবিরত রাখলে আপনি আরও কাছাকাছি আসতে পারবেন তবে আপনি কখনই একেবারে ঠিক আঘাত করতে পারবেন না। এবং প্রতিবার 2 দিয়ে বিভাজন করার সময় আমাদের আরও বেশি পরিমাণে বিট প্রয়োজন 2 সুতরাং 2 দ্বারা বিভাজিত যে কোনও সিস্টেমের সাথে 0.1 উপস্থাপনের জন্য অসীম সংখ্যক বিট দরকার needs আমার হার্ড ড্রাইভ ঠিক তেমন বড় নয়।
সুতরাং আইইইই 754 বিটগুলি শেষ হয়ে গেলে চেষ্টা করা বন্ধ করে দেয়। যা দুর্দান্ত কারণ আমার পারিবারিক ছবিগুলির জন্য আমার হার্ড ড্রাইভে রুম দরকার। সত্যিই না. পারিবারিক ছবি। : P: P
যাইহোক, আপনি কী টাইপ করেন এবং যা দেখেন তা হ'ল দশমিক (ডানদিকে) তবে আপনি যা সঞ্চয় করেন তা দ্বিদিক (বাম দিকে)। কখনও কখনও এগুলি পুরোপুরি একই হয়। কখনও কখনও তারা না। কখনও কখনও এটি দেখতে একই রকম হয় যখন তারা সহজভাবে হয় না। এটাই গোল।
বিশেষত, কিছু মুদ্রায় মান সংরক্ষণ করতে এবং এটি মুদ্রণ করতে আমাদের কী জানতে হবে?
দয়া করে, আপনি যদি আমার দশমিক ভিত্তিক অর্থ পরিচালনা করেন তবে ফ্লোট বা ডাবল ব্যবহার করবেন না।
যদি আপনি নিশ্চিত হন যে দশম পেনিগুলির মতো জিনিসগুলি জড়িত না থাকে তবে কেবল পেনিগুলি সঞ্চয় করুন। আপনি যদি না হন তবে এই মুদ্রার ক্ষুদ্রতম ইউনিটটি কী হতে চলেছে তা ব্যবহার করুন এবং এটি ব্যবহার করুন। আপনি না পারলে বিগডিসিমালের মতো কিছু ব্যবহার করুন ।
আমার নেট সম্পত্তি সম্ভবত সবসময় একটি ঠিক 64 বিট পূর্ণসংখ্যায় ফিট করে তবে বিগইন্টিজারের মতো জিনিসগুলি এর চেয়ে বড় প্রকল্পগুলির জন্য ভাল কাজ করে। এগুলি দেশীয় ধরণের চেয়ে ধীর।
কীভাবে এটি সংরক্ষণ করতে হবে তা নির্ধারণের জন্য সমস্যাটি কেবলমাত্র অর্ধেক। মনে রাখবেন আপনাকে এটি প্রদর্শন করতে সক্ষম হতে হবে। একটি ভাল নকশা এই দুটি জিনিস আলাদা করবে। এখানে ভাসমান ব্যবহারের ক্ষেত্রে আসল সমস্যাটি হ'ল এই দুটি জিনিস একসাথে মিশে গেছে।