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])];
}