Преобразовать в абсолютное значение в Objective-C - PullRequest
182 голосов
/ 17 января 2011

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

т.е.

-10

становится

10

Ответы [ 2 ]

451 голосов
/ 17 января 2011

В зависимости от типа вашей переменной, одна из 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(), который является шаблономдля всех стандартных целочисленных типов и типов с плавающей точкой.

4 голосов
/ 26 мая 2014

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

+(NSNumber *)absoluteValue:(NSNumber *)input {
  return [NSNumber numberWithDouble:fabs([input doubleValue])];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...