আমি কীভাবে নেতিবাচক সংখ্যাকে অবজেক্টিভ-সি-তে পরম মানে রূপান্তর করব?
অর্থাত
-10
হয়ে
10?
আমি কীভাবে নেতিবাচক সংখ্যাকে অবজেক্টিভ-সি-তে পরম মানে রূপান্তর করব?
অর্থাত
-10
হয়ে
10?
উত্তর:
আপনার ভেরিয়েবলের ধরন, এক উপর নির্ভর করে abs(int)
, labs(long)
, llabs(long long)
, imaxabs(intmax_t)
, fabsf(float)
, fabs(double)
, অথবা fabsl(long double)
।
এই ফাংশনগুলি সি স্ট্যান্ডার্ড লাইব্রেরির সমস্ত অংশ, এবং তাই উদ্দেশ্য-সি এবং প্লেইন সি উভয় উপস্থিত রয়েছে (এবং সাধারণত সি ++ প্রোগ্রামগুলিতেও উপলব্ধ))
(হায় আফসোস, কোন habs(short)
ফাংশন নেই Or বা scabs(signed char)
সেই বিষয়ে ...)
অ্যাপল এবং জিএনইউ এর উদ্দেশ্য-সি শিরোনামে একটি ABS()
ম্যাক্রো অন্তর্ভুক্ত রয়েছে যা টাইপ-অজোনস্টিক ost ABS()
তবে তবে এটি ব্যবহার করার পরামর্শ দিচ্ছি না কারণ এটি পার্শ্ব-প্রতিক্রিয়া-নিরাপদ হওয়ার গ্যারান্টিযুক্ত নয়। উদাহরণস্বরূপ, ABS(a++)
একটি অপরিবর্তিত ফলাফল থাকবে।
আপনি যদি সি ++ বা অবজেক্টিভ-সি ++ ব্যবহার করছেন তবে আপনি <cmath>
শিরোনাম আনতে এবং ব্যবহার করতে পারেন std::abs()
যা সমস্ত স্ট্যান্ডার্ড পূর্ণসংখ্যার এবং ভাসমান-পয়েন্টের ধরণের জন্য শিষ্ট।
ABS()
কিছু সমস্ত সংকলকগুলিতে পার্শ্ব-প্রতিক্রিয়া নিরাপদ নয়, তবে, এজন্যই আমি এটি ব্যবহার করার পরামর্শ দিই না।
extern float fabsf(float); extern double fabs(double);
পরম মান পেতে আপনি এই ফাংশনটি ব্যবহার করতে পারেন:
+(NSNumber *)absoluteValue:(NSNumber *)input {
return [NSNumber numberWithDouble:fabs([input doubleValue])];
}