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.