ฉันจะแปลงจำนวนลบให้เป็นค่าสัมบูรณ์ใน Objective-C ได้อย่างไร
กล่าวคือ
-10
กลายเป็น
10?
ฉันจะแปลงจำนวนลบให้เป็นค่าสัมบูรณ์ใน Objective-C ได้อย่างไร
กล่าวคือ
-10
กลายเป็น
10?
คำตอบ:
ทั้งนี้ขึ้นอยู่กับชนิดของตัวแปรของคุณหนึ่งในabs(int), labs(long), llabs(long long), imaxabs(intmax_t), fabsf(float), หรือfabs(double)fabsl(long double)
ฟังก์ชั่นเหล่านั้นเป็นส่วนหนึ่งของไลบรารีมาตรฐาน C และมีอยู่ทั้งใน Objective-C และ C ธรรมดา (และโดยทั่วไปจะมีอยู่ในโปรแกรม C ++ ด้วย)
(อนิจจาไม่มีhabs(short)ฟังก์ชั่นหรือscabs(signed char)สำหรับเรื่องนั้น ... )
ส่วนหัวของ Objective-C ของ Apple และ GNU นั้นรวมถึงABS()แมโครซึ่งเป็นผู้ไม่เชื่อเรื่องพระเจ้า ฉันไม่แนะนำให้ใช้ABS()อย่างไรก็ตามไม่รับประกันว่าจะมีผลข้างเคียง - ปลอดภัย ตัวอย่างเช่นABS(a++)จะมีผลลัพธ์ที่ไม่ได้กำหนด
หากคุณใช้ C ++ หรือ Objective-C ++ คุณสามารถนำ<cmath>ส่วนหัวและการใช้งานมาใช้std::abs()ซึ่งจะถูกสร้างด้วยจำนวนเต็มมาตรฐานและชนิดจำนวนเต็มทั้งหมด
ABS()ไม่ได้มีผลข้างเคียงที่ปลอดภัยสำหรับคอมไพเลอร์ทั้งหมดซึ่งเป็นสาเหตุที่ฉันไม่แนะนำให้ใช้
extern float fabsf(float); extern double fabs(double);
คุณสามารถใช้ฟังก์ชันนี้เพื่อรับค่าสัมบูรณ์:
+(NSNumber *)absoluteValue:(NSNumber *)input {
return [NSNumber numberWithDouble:fabs([input doubleValue])];
}