2011-01-17 12 views
172

¿Cómo convierto un número negativo a un valor absoluto en Objective-C?Convierta a valor absoluto en Objective-C

decir

-10

convierte

10?

+3

@SalvadorDali: No hay nada malo con SO; la pregunta no requirió esfuerzo y no sigue las pautas de SO, mientras que la respuesta es en profundidad y correcta. –

Respuesta

436

Dependiendo del tipo de la variable, una de abs(int), labs(long), llabs(long long), imaxabs(intmax_t), fabsf(float), fabs(double), o fabsl(long double).

Esas funciones son parte de la biblioteca estándar de C, y así están presentes tanto en Objective-C y C plano (y generalmente están disponibles en C++ programas también.)

(Por desgracia, no hay ninguna función habs(short) . O scabs(signed char) para el caso ...)


cabeceras de Objective-C de GNU de Apple y también incluyen una macro ABS() que es de tipo agnóstica. No recomiendo usar ABS(), sin embargo, no se garantiza que sea seguro para los efectos secundarios. Por ejemplo, ABS(a++) tendrá un resultado indefinido.


Si estás usando C++ u Objective-C++, se puede llevar en la cabecera <cmath> y utilizar std::abs(), que se templated para todos los tipos de enteros y de coma flotante estándar.

+31

O podría usar la macro ABS, que funciona en cualquier tipo de número. – ughoavgfhw

+1

@ugsomethingsomething 'ABS()' no es seguro para efectos secundarios en todos los compiladores, sin embargo, por eso no recomiendo usarlo. –

+0

Es en realidad: fábulas fabsf (dobles) (float) – Alex

3

Puede utilizar esta función para obtener el valor absoluto:

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