टर्नरी ऑपरेटर और टाइप कास्टिंग का उपयोग करके एक लाइन में राउंडिंग फंक्शन लिखा जा सकता है।
वन-लाइनर फंक्शन
int my_round(float number) {
return (int)(number < 0 ? number - 0.5f : number + 0.5f);
}
कैसे काम करता है
- धनात्मक संख्या:
0.5जोड़कर ट्रंकेशन से निकटतम इंटीजर प्राप्त होता है। - ऋणात्मक संख्या:
0.5घटाकर (अधिक ऋणात्मक) सही राउंडिंग होती है। (int)कास्ट भिन्नात्मक भाग हटाता है (शून्य की ओर ट्रंकेट)।
उदाहरण
#include <stdio.h>
int my_round(float number) {
return (int)(number < 0 ? number - 0.5f : number + 0.5f);
}
int main() {
printf("Rounding of 2.48: %d\n", my_round(2.48)); // 2
printf("Rounding of 2.5: %d\n", my_round(2.5)); // 3
printf("Rounding of -5.79: %d\n", my_round(-5.79)); // -6
printf("Rounding of -5.5: %d\n", my_round(-5.5)); // -6
return 0;
}
आउटपुट
Rounding of 2.48: 2 Rounding of 2.5: 3 Rounding of -5.79: -6 Rounding of -5.5: -6
सीमाएं और बेहतर विकल्प
- हाफ-वे केस: 2.5 → 3, -2.5 → -3 (अवे फ्रॉम जीरो)। यह "राउंड हाफ अवे फ्रॉम जीरो" है।
- बड़े मान:
floatप्रिसिजन सीमा (~7 डिजिट्स)।doubleके लिए ओवरलोड लिखें। - मानक लाइब्रेरी:
round()(math.h/cmath, C99/C++11) उपयोग करें - यह IEEE 754 अनुरूप है।
मानक round() उपयोग
#include <math.h>
#include <stdio.h>
int main() {
printf("round(2.5) = %.0f\n", round(2.5)); // 3
printf("round(-2.5) = %.0f\n", round(-2.5)); // -3
return 0;
}