কম্পিউটার

সি, সি++ এবং জাভাতে ফ্লোটিং পয়েন্ট অপারেশন এবং অ্যাসোসিয়েটিভিটি


C, C++ এবং java-এ আমরা ফ্লোটিং পয়েন্ট সংখ্যার সাথে কিছু গাণিতিক অপারেশন করি। এখন আমরা এখানে পরীক্ষা করব যে ফ্লোটিং পয়েন্ট নম্বরগুলি অ্যাসোসিয়েটিভিটি নিয়ম অনুসরণ করছে কি না৷

উত্তর হল না। ফ্লোটিং পয়েন্ট সংখ্যা কিছু ক্ষেত্রে সহযোগীতার নিয়ম অনুসরণ করে না। এখানে আমরা কিছু উদাহরণ দেখব।

উদাহরণ কোড

#include<iostream>
using namespace std;
main() {
   float x = -500000000;
   float y = 500000000;
   float z = 1;
   cout << "x + (y + z) is: " << x + (y + z) << endl;
   cout << "(x + y) + z is "<< (x + y) + z << endl;
}

আউটপুট

x + (y + z) is: 0
(x + y) + z is 1

এখানে, আমরা দেখতে পাচ্ছি ফলাফলগুলি একই নয়, তবে তাত্ত্বিকভাবে আমরা বলতে পারি যে তারা সর্বদা 1 হবে। এখন প্রশ্ন আসে, এটা কিভাবে করা হয়?

প্রথম ক্ষেত্রে x + (y + z), (500000000 + 1) পারফর্ম করছে। কিন্তু ফ্লোটিং পয়েন্ট রাউন্ড অফের জন্য, এটি আবার 500000000 এ রূপান্তরিত হয়। এখন এর সাথে -500000000 যোগ করলে, এটি 0 হয়ে যায়। দ্বিতীয় রাশিতে, মানটি (-500000000 + 500000000) =0, তারপর 1 যোগ করুন যাতে চূড়ান্ত ফলাফল 1 হয়।

যদি আমরা পূর্ণসংখ্যা ব্যবহার করি, তাহলে উভয় রাশি একই ফলাফল দেবে, যা হল 1.


  1. সি, সি++, জাভা, এবং সি# এ ইনক্রিমেন্ট অপারেটর আচরণের পূর্ব ও পরে

  2. অগ্রাধিকার এবং সহযোগীতা সহ C++ অপারেটর

  3. জাভা 8 এ মধ্যবর্তী এবং টার্মিনাল অপারেশনের মধ্যে পার্থক্য

  4. পাইথনে দশমিক ফিক্সড পয়েন্ট এবং ফ্লোটিং পয়েন্ট পাটিগণিত