Como converter um número negativo em um valor absoluto em Objective-C?
ie
-10
torna-se
10?
Como converter um número negativo em um valor absoluto em Objective-C?
ie
-10
torna-se
10?
Respostas:
Dependendo do tipo da sua variável, um dos abs(int)
, labs(long)
, llabs(long long)
, imaxabs(intmax_t)
, fabsf(float)
, fabs(double)
, ou fabsl(long double)
.
Essas funções fazem parte da biblioteca padrão C e, portanto, estão presentes no Objective-C e no C simples (e geralmente também estão disponíveis nos programas C ++).
(Infelizmente, não há habs(short)
função. Ou, scabs(signed char)
nesse caso ...)
Os cabeçalhos Objective-C da Apple e do GNU também incluem uma ABS()
macro independente do tipo. No ABS()
entanto, não recomendo o uso, pois não é garantido que seja seguro contra efeitos colaterais. Por exemplo, ABS(a++)
terá um resultado indefinido.
Se você estiver usando C ++ ou Objective-C ++, poderá trazer o <cmath>
cabeçalho e usá-lo std::abs()
, que é modelado para todos os tipos de número inteiro e ponto flutuante padrão.
ABS()
não é seguro para todos os compiladores, e é por isso que não recomendo usá-lo.
extern float fabsf(float); extern double fabs(double);
Você pode usar esta função para obter o valor absoluto:
+(NSNumber *)absoluteValue:(NSNumber *)input {
return [NSNumber numberWithDouble:fabs([input doubleValue])];
}