उद्देश्य-सी में पूर्ण मूल्य में परिवर्तित करें


187

मैं उद्देश्य-सी में एक ऋणात्मक संख्या को निरपेक्ष मान में कैसे बदलूं?

अर्थात

-10

हो जाता है

10?


3
@ साल्वाडोरडाली: एसओ के साथ कुछ भी गलत नहीं है; प्रश्न ने प्रयास नहीं किया और SO दिशानिर्देशों का पालन नहीं करता है, जबकि उत्तर गहराई और सही है।
जोशु एस्पिनोसा

जवाबों:


458

अपने चर के प्रकार, में से एक पर निर्भर करता है abs(int), labs(long), llabs(long long), imaxabs(intmax_t), fabsf(float), fabs(double), या fabsl(long double)

वे कार्य C मानक पुस्तकालय के सभी भाग हैं, और इसलिए दोनों उद्देश्य-सी और सादे C में मौजूद हैं (और आम तौर पर C ++ कार्यक्रमों में भी उपलब्ध हैं।)

(काश, कोई habs(short)फंक्शन नहीं होता। या scabs(signed char)उस बात के लिए ...)


ऐप्पल और जीएनयू के ऑब्जेक्टिव-सी हेडर में एक ABS()मैक्रो भी शामिल है जो टाइप-एग्नॉस्टिक है। मैं ABS()हालांकि इसके साइड-इफ़ेक्ट-सुरक्षित होने की गारंटी नहीं है, लेकिन मैं इसका उपयोग करने की सलाह नहीं देता। उदाहरण के लिए, ABS(a++)एक अपरिभाषित परिणाम होगा।


यदि आप C ++ या Objective-C ++ का उपयोग कर रहे हैं, तो आप <cmath>हेडर और उपयोग में ला सकते हैं std::abs(), जो सभी मानक पूर्णांक और फ्लोटिंग-पॉइंट प्रकारों के लिए टेम्पलेटेड है।


33
या आप ABS मैक्रो का उपयोग कर सकते हैं, जो किसी भी संख्या प्रकार पर काम करता है।
उघौवगफव्व

1
@ugsomethingsomething ABS()सभी संकलक पर साइड-इफ़ेक्ट सुरक्षित नहीं है, हालाँकि, यही कारण है कि मैं इसका उपयोग करने की सलाह नहीं देता।
जोनाथन ग्रिप्सन

यह वास्तव में है: fabsf (डबल) फ़ैब्स (फ्लोट)
एलेक्स

@ एलेक्स नं, ये गणित में परिभाषाएं हैं:extern float fabsf(float); extern double fabs(double);
गोब

3

पूर्ण मान प्राप्त करने के लिए आप इस फ़ंक्शन का उपयोग कर सकते हैं:

+(NSNumber *)absoluteValue:(NSNumber *)input {
  return [NSNumber numberWithDouble:fabs([input doubleValue])];
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.