Objective-C에서 절대 값으로 변환


187

Objective-C에서 음수를 절대 값으로 어떻게 변환합니까?

-10

된다

10?


3
@SalvadorDali : SO에는 아무런 문제가 없습니다. 질문은 노력을 기울이지 않았고 SO 지침을 따르지 않지만 대답은 심층적이고 정확합니다.
Josue Espinosa

답변:


458

당신의 변수의 유형 중 하나에 따라 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)그 문제에 대해서는 ...)


Apple과 GNU의 Objective-C 헤더에는 ABS()유형에 구애받지 않는 매크로 도 포함되어 있습니다. ABS()그러나 부작용 안전하다고 보장되지는 않지만 사용하지 않는 것이 좋습니다 . 예를 들어 ABS(a++)정의되지 않은 결과가 나타납니다.


C ++ 또는 Objective-C ++를 <cmath>사용 std::abs()하는 경우 모든 표준 정수 및 부동 소수점 유형에 대해 템플릿 화 된 헤더를 가져 와서 사용할 수 있습니다.


33
또는 모든 유형의 ABS 매크로를 사용할 수 있습니다.
ughoavgfhw

1
@ugsomethingsomething ABS()은 모든 컴파일러에서 부작용이 안전하지 않으므로 사용하지 않는 것이 좋습니다.
Jonathan Grynspan

실제로 : fabsf (double) fabs (float)
Alex

@Alex 아니오, 이들은 math.h의 정의입니다 :extern float fabsf(float); extern double fabs(double);
Gobe

3

이 함수를 사용하여 절대 값을 얻을 수 있습니다.

+(NSNumber *)absoluteValue:(NSNumber *)input {
  return [NSNumber numberWithDouble:fabs([input doubleValue])];
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.