Как преобразовать отрицательное число в абсолютное значение в 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])];
}