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