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

C++-এ float এবং double তুলনা করা (Comparing Float and Double)

ফ্লোটিং পয়েন্ট সংখ্যা সরাসরি == দিয়ে তুলনা করা যাবে না (প্রিসিশন এরর)। টলারেন্স (epsilon) ব্যবহার করতে হয়।

সিম্পল ফাংশন (Epsilon-based)

#include <iostream>
#include <cmath>
using namespace std;

const double EPSILON = 0.000001;

bool areSame(double a, double b) {
    return fabs(a - b) < EPSILON;
}

int main() {
    double a = 1.005, b = 1.006;
    cout << areSame(a, a) << endl; // 1 (true)
    cout << areSame(a, b) << endl; // 0 (false)
}

আউটপুট

1
0

উন্নত পদ্ধতি (Relative comparison): বড় সংখ্যার জন্য আبسোলিউট epsilon কাজ করে না। ULPs (Units in Last Place) বা রিলেটিভ কম্পারিজন ব্যবহার করুন।

রেফারেন্স: "Comparing Floating Point Numbers" by Bruce Dawson (randomascii.wordpress.com) - এই টপিকের বাইবেল।

C++20: std::cmp_equal, std::cmp_less ইত্যাদি (<utility>) ইন্টিজার/ফ্লোট সেফ কম্পারিজনের জন্য যোগ হয়েছে।

  1. সি++ প্রোগ্রাম: দ্বি-অভিশ্লেষণ (Double Integration) গণনা

  2. C++-এ কম্বিনেশন এবং পারমিউটেশন কীভাবে গণনা করবেন?

  3. ডাবল VPN কী এবং এটি কীভাবে সেট আপ করতে হয়?

  4. Windows 10-এ ফোল্ডার তুলনা ও সিঙ্ক্রোনাইজ: সম্পূর্ণ গাইড