ฉันจะแปลงจำนวนลบให้เป็นค่าสัมบูรณ์ใน 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])];
}