Bagaimana cara mengonversi angka negatif ke nilai absolut di Objective-C?
yaitu
-10
menjadi
10?
Bagaimana cara mengonversi angka negatif ke nilai absolut di Objective-C?
yaitu
-10
menjadi
10?
Jawaban:
Tergantung pada jenis variabel Anda, salah abs(int)
, labs(long)
, llabs(long long)
, imaxabs(intmax_t)
, fabsf(float)
, fabs(double)
, atau fabsl(long double)
.
Fungsi-fungsi itu semua adalah bagian dari pustaka standar C, dan juga hadir baik di Objective-C dan plain C (dan umumnya juga tersedia di program C ++.)
(Sayangnya, tidak ada habs(short)
fungsi. Atau scabs(signed char)
dalam hal ini ...)
Header Objective-C Apple dan GNU juga menyertakan ABS()
makro yang bertipe agnostik. Namun saya tidak menyarankan penggunaan ABS()
karena tidak dijamin aman efek samping. Misalnya, ABS(a++)
akan memiliki hasil yang tidak ditentukan.
Jika Anda menggunakan C ++ atau Objective-C ++, Anda bisa memasukkan <cmath>
header dan gunakan std::abs()
, yang templated untuk semua tipe integer standar dan floating-point.
ABS()
tidak efek samping yang aman pada semua kompiler, karena itu saya tidak menyarankan untuk menggunakannya.
extern float fabsf(float); extern double fabs(double);
Anda dapat menggunakan fungsi ini untuk mendapatkan nilai absolut:
+(NSNumber *)absoluteValue:(NSNumber *)input {
return [NSNumber numberWithDouble:fabs([input doubleValue])];
}