Negatif bir sayıyı Objective-C'de mutlak bir değere nasıl dönüştürebilirim?
yani
-10
olur
10?
Negatif bir sayıyı Objective-C'de mutlak bir değere nasıl dönüştürebilirim?
yani
-10
olur
10?
Yanıtlar:
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 .
ABS()tüm derleyicilerde yan etki güvenli değildir, bu yüzden onu kullanmanızı önermiyorum.
extern float fabsf(float); extern double fabs(double);
Mutlak değeri almak için bu işlevi kullanabilirsiniz:
+(NSNumber *)absoluteValue:(NSNumber *)input {
return [NSNumber numberWithDouble:fabs([input doubleValue])];
}