Wie konvertiere ich eine negative Zahl in Objective-C in einen absoluten Wert?
dh
-10
wird
10?
Wie konvertiere ich eine negative Zahl in Objective-C in einen absoluten Wert?
dh
-10
wird
10?
Antworten:
Je nach Art des variablen, von abs(int)
, labs(long)
, llabs(long long)
, imaxabs(intmax_t)
, fabsf(float)
, fabs(double)
, oderfabsl(long double)
.
Diese Funktionen sind alle Teil der C-Standardbibliothek und daher sowohl in Objective-C als auch in C enthalten (und sind im Allgemeinen auch in C ++ - Programmen verfügbar.)
(Leider gibt es keine habs(short)
Funktion. Oder scabs(signed char)
für diese Angelegenheit ...)
Die Objective-C-Header von Apple und GNU enthalten auch ein ABS()
typunabhängiges Makro. Ich empfehle ABS()
jedoch nicht, es zu verwenden, da es nicht garantiert nebenwirkungssicher ist. Zum Beispiel ABS(a++)
wird ein undefiniertes Ergebnis haben.
Wenn Sie C ++ oder Objective-C ++ verwenden, können Sie den <cmath>
Header einbringen und verwenden std::abs()
, der für alle Standardtypen für Ganzzahlen und Gleitkommazahlen vorgesehen ist.
ABS()
ist jedoch nicht bei allen Compilern nebenwirkungssicher , weshalb ich die Verwendung nicht empfehle.
extern float fabsf(float); extern double fabs(double);
Mit dieser Funktion können Sie den absoluten Wert ermitteln:
+(NSNumber *)absoluteValue:(NSNumber *)input {
return [NSNumber numberWithDouble:fabs([input doubleValue])];
}