Objective-C içinde mutlak değere dönüştür


187

Negatif bir sayıyı Objective-C'de mutlak bir değere nasıl dönüştürebilirim?

yani

-10

olur

10?


3
@SalvadorDali: SO ile ilgili yanlış bir şey yok; soru çaba göstermedi ve SO yönergelerine uymuyor, ancak cevap derinlemesine ve doğru.
Josue Espinosa

Yanıtlar:


458

Değişkeniniz tipine, biri bağlı abs(int), labs(long), llabs(long long), imaxabs(intmax_t), fabsf(float), fabs(double), veya fabsl(long double).

Bu işlevlerin tümü C standart kitaplığının bir parçasıdır ve bu nedenle hem Objective-C hem de düz C'de bulunur (ve genellikle C ++ programlarında da kullanılabilir).

(Ne yazık ki, hiçbir habs(short)işlevi yoktur . Veya scabs(signed char)bu konuda ...)


Apple ve GNU'nun Objective-C başlıkları da ABS()tip agnostik olan bir makro içerir. ABS()Ancak yan etki için güvenli olduğu garanti edilmediğinden kullanılmasını önermiyorum . Örneğin, ABS(a++)tanımsız bir sonucu olacaktır.


C ++ veya Objective-C ++ <cmath>kullanıyorsanız std::abs(), tüm standart tamsayı ve kayan nokta türleri için ayarlanan başlığı ve kullanımı getirebilirsiniz .


33
Veya herhangi bir sayı türü üzerinde çalışan ABS makrosunu kullanabilirsiniz.
ughoavgfhw

1
@ugsomethingsomething ABS()tüm derleyicilerde yan etki güvenli değildir, bu yüzden onu kullanmanızı önermiyorum.
Jonathan Grynspan

Aslında: fabsf (çift) fabs (şamandıra)
Alex

@Alex no, bunlar math.h'deki tanımlar:extern float fabsf(float); extern double fabs(double);
Gobe

3

Mutlak değeri almak için bu işlevi kullanabilirsiniz:

+(NSNumber *)absoluteValue:(NSNumber *)input {
  return [NSNumber numberWithDouble:fabs([input doubleValue])];
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.