Преобразовать в абсолютное значение в Objective-C

Как преобразовать отрицательное число в абсолютное значение в Objective-C?

то есть.

-10

становится

10

Ответ 1

В зависимости от типа вашей переменной один из abs(int), labs(long), llabs(long long), imaxabs(intmax_t), fabsf(float), fabs(double) или fabsl(long double).

Эти функции являются частью стандартной библиотеки C и поэтому присутствуют как в Objective-C, так и в обычном C (и обычно доступны в программах на С++).

(Увы, функции habs(short) нет, или scabs(signed char), если на то пошло...)


Заголовки Apple и GNU Objective-C также включают макрос ABS() , который является агностиком типа. Я не рекомендую использовать ABS() , так как он не гарантированно защищен от побочных эффектов. Например, ABS(a++) будет иметь результат undefined.

Если вы используете С++ или Objective-C ++, вы можете ввести заголовок <cmath> и использовать std::abs(), который настроен для всех стандартных типов с целыми числами и с плавающей точкой.

Ответ 2

Вы можете использовать эту функцию для получения абсолютного значения:

+(NSNumber *)absoluteValue:(NSNumber *)input {
  return [NSNumber numberWithDouble:fabs([input doubleValue])];
}