কম্পিউটার টিউটোরিয়াল

C, C++ ও Java-এ ফ্লোটিং পয়েন্ট অপারেশন এবং অ্যাসোসিয়াটিভিটি


C, C++, এবং Java-এ ফ্লোটিং পয়েন্ট সংখ্যা দিয়ে গাণিতিক অপারেশন করা হয়। কিন্তু ফ্লোটিং পয়েন্ট সংখ্যাগুলো অ্যাসোসিয়েটিভিটি নিয়ম মেনে না।

উদাহরণ কোড

#include <iostream>
using namespace std;
int 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;
    return 0;
}

আউটপুট

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

তাত্ত্বিকভাবে দুটোই ১ হওয়া উচিত। কিন্তু ফ্লোটিং পয়েন্ট রাউন্ড অফ এর কারণে ফলাফল ভিন্ন হয়।

x + (y + z)-এ (500000000 + 1) = 500000000 হয়ে যায় (রাউন্ড অফ)। তারপর -500000000 যোগ করলে ০।

(x + y) + z-এ (-500000000 + 500000000) = ০, তারপর +1 = ১।

ইন্টিজার ব্যবহার করলে দুটোই ১ দেবে।


  1. C, C++, Java, এবং C#-এ প্রি-ইনক্রিমেন্ট এবং পোস্ট-ইনক্রিমেন্ট অপারেটরের আচরণ

  2. C++ অপারেটর প্রেসিডেন্স এবং অ্যাসোসিয়েটিভিটি

  3. জাভা ৮-এ ইন্টারমিডিয়েট এবং টার্মিনাল স্ট্রিম অপারেশনের পার্থক্য

  4. পাইথনে ডেসিমাল ফিক্সড পয়েন্ট এবং ফ্লোটিং পয়েন্ট অর্থমেটিক (decimal)