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