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

সি ভাষায় এক লাইনে ফ্লোটিং পয়েন্ট রাউন্ডিং ফাংশন

সি-এ একটি লাইনের ফাংশন লিখে ফ্লোটিং-পয়েন্ট নম্বর নিকটতম পূর্ণসংখ্যায় রাউন্ড করা যায়। লজিক: পজিটিভ নম্বরের সাথে ০.৫ যোগ করুন, নেগেটিভ নম্বরের সাথে ০.৫ বিয়োগ করুন, তারপর ইন্টিজারে কাস্ট করুন।

লজিক

round(x) = (int)(x < 0 ? x - 0.5 : x + 0.5)

উদাহরণ

#include <stdio.h>

int my_round(float number) {
    return (int)(number < 0 ? number - 0.5 : number + 0.5);
}

int main() {
    printf("Rounding of (2.48): %d\n", my_round(2.48));   // 2
    printf("Rounding of (-5.79): %d\n", my_round(-5.79)); // -6
    printf("Rounding of (2.5): %d\n", my_round(2.5));     // 3
    printf("Rounding of (-2.5): %d\n", my_round(-2.5));   // -3
    return 0;
}

আউটপুট

Rounding of (2.48): 2
Rounding of (-5.79): -6
Rounding of (2.5): 3
Rounding of (-2.5): -3

স্ট্যান্ডার্ড লাইব্রেরি ফাংশন (C99/C++11)

#include <math.h> // C
// #include <cmath> // C++

round(2.48)   // 2.0 (double)
roundf(2.48f) // 2.0f (float)
roundl(2.48L) // 2.0L (long double)

// রিটার্ন টাইপ একই ফ্লোটিং-পয়েন্ট, ইন্ট চাইলে:
int r = (int)round(2.48);

রাউন্ডিং মোড (fesetround)

round() সবসময় "half away from zero" করে। কিন্তু rint(), nearbyint() বর্তমান রাউন্ডিং মোড অনুসরণ করে (FE_TONEAREST, FE_DOWNWARD, FE_UPWARD, FE_TOWARDZERO)।

সতর্কতা

  • হarf-ওয়ে (x.5) কেসে round শূন্য থেকে দূরে রাউন্ড করে (২.৫→৩, -২.৫→-৩)
  • ব্যাংকস রাউন্ডিং (Round half to even) চাইলে rint() বা nearbyint() ব্যবহার করুন FE_TONEAREST মোডে
  • বড় ফ্লোটিং-পয়েন্ট নম্বরের জন্য ইন্টে কাস্ট করলে ওভারফ্লো হতে পারে — long long বা int64_t ব্যবহার করুন
  1. গুগল শিটসে সংখ্যা ৫ বা ১০-এর নিকটতম গুণকে রাউন্ড করুন

  2. এক্সেলে ROUND ফাংশন ব্যবহার করার পদ্ধতি

  3. C-এ ফ্লোটিং পয়েন্ট সংখ্যার সেট বিট গণনা করা

  4. এক্সেলে ROUND ফাংশন ব্যবহার করে সংখ্যা রাউন্ড করার পদ্ধতি