Як перетворити від'ємне число в абсолютне значення в 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)
.
Ці функції є частиною стандартної бібліотеки С, і тому вони присутні як в Objective-C, так і в простому C (і зазвичай вони також доступні в програмах C ++.)
(На жаль, habs(short)
функцій немає . Або scabs(signed char)
з цього приводу ...)
Заголовки Apple і GNU Objective-C також містять 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])];
}