Come faccio a convertire un numero negativo in un valore assoluto in Objective-C?
vale a dire
-10
diventa
10?
Come faccio a convertire un numero negativo in un valore assoluto in Objective-C?
vale a dire
-10
diventa
10?
Risposte:
A seconda del tipo della variabile, una delle abs(int)
, labs(long)
, llabs(long long)
, imaxabs(intmax_t)
, fabsf(float)
, fabs(double)
, o fabsl(long double)
.
Queste funzioni fanno tutte parte della libreria standard C e quindi sono presenti sia in Objective-C che in C semplice (e sono generalmente disponibili anche nei programmi C ++).
(Ahimè, non esiste alcuna habs(short)
funzione. O del scabs(signed char)
resto ...)
Le intestazioni Objective-C di Apple e GNU includono anche una ABS()
macro che è di tipo agnostico. Non è consigliabile utilizzarlo ABS()
tuttavia poiché non è garantito che sia sicuro per gli effetti collaterali. Ad esempio, ABS(a++)
avrà un risultato indefinito.
Se stai usando C ++ o Objective-C ++, puoi inserire l' <cmath>
intestazione e usare std::abs()
, che è modellato per tutti i tipi interi e in virgola mobile standard.
ABS()
non è sicuro per gli effetti collaterali su tutti i compilatori, motivo per cui non consiglio di usarlo.
extern float fabsf(float); extern double fabs(double);
È possibile utilizzare questa funzione per ottenere il valore assoluto:
+(NSNumber *)absoluteValue:(NSNumber *)input {
return [NSNumber numberWithDouble:fabs([input doubleValue])];
}