Mathematische Funktionen in Objective-C

Von am 26.02.2012 | 2 Comments

Problem: In vielen Programmen/Apps benötigt man aus den unterschiedlichsten Gründen mathematische Funktionen. Diese sind z.B. eine Zahl richtig runden, der Rückgabewert einer Zahl soll immer positiv sein, Vergleich zweier Zahlen und Rückgabe der größeren/kleineren  Zahlen oder Entfernung der Dezimalstellen einer Zahl. Um solche Funktionen in Objective-C verwenden zu können, greift ihr ganz einfach auf die mathematischen Funktionen aus C zurück. Diese sind in der Datei “math.h” definiert (in dieser Datei findet ihr weitaus mehr Funktionen wie hier aufgeführt).

Lösung: In den folgenden Beispielen zeige ich euch, anhand einiger Beispiele, die Rückgabewerte einiger Funktionen.

floor(double a): Nullt alle Dezimalstellen einer Zahl

NSLog(@"floor(1.234): %f",floor(1.234)); // 1.000000
NSLog(@"floor(4.9): %f",floor(4.9)); // 4.000000
NSLog(@"floor(7.45): %f",floor(7.45)); // 7.000000

fabs(double a): Rückgabe einer positiven Zahl ohne Dezimalstellen (int)

NSLog(@"fabs(-45: %.f", fabs(-45)); // 45
NSLog(@"fabs(6.12): %.f", fabs(6.12)); // 6
NSLog(@"fabs(-6.12): %.f", fabs(-6.12)); // 6

round(double a): Rundet positive sowie negative Zahlen

NSLog(@"round(1.5): %.f", round(1.5)); // 2
NSLog(@"round(-1.5): %.f", round(-1.5)); // -2
NSLog(@"round(2.45): %.f", round(2.45)); // 2

fmin(double a, double b): Vergleicht zwei Zahlen und gibt die kleinere der Beiden zurück

NSLog(@"fmin(1,2): %.f", fmin(1,2)); // 1
NSLog(@"fmin(1.123456,1.123457): %.f", fmin(1.123456,1.123457)); // 1

fmax(double a, double b): Vergleicht zwei Zahlen und gibt die größere der Beiden zurück

NSLog(@"fmax(2,19): %.f", fmax(2,19)); // 19
NSLog(@"fmax(182,29): %.f", fmax(182,29)); // 182

ceil(double a): Rückgabe der nächst größeren Zahl, sobald eine Dezimalstelle existiert

NSLog(@"ceil(1.0000001): %f", ceil(1.0000001)); // 2.000000
NSLog(@"ceil(1.0000000): %f", ceil(1.0000000)); // 1.000000
NSLog(@"ceil(0.0000001): %f", ceil(0.0000001)); // 1.000000

sqrt(double a): Zieht die Wurzel einer Zahl

NSLog(@"sqrt(9): %f", sqrt(9)); // 3.000000
NSLog(@"sqrt(78.54): %f", sqrt(78.54)); // 8.862280
NSLog(@"sqrt(123): %f", sqrt(123)); // 11.090537

pow(double a, double b) Berechnet einen beliebigen Exponent bsp. ab (a hoch b)

NSLog(@"pow(2,2): %f", pow(2,2)); // 4.000000
NSLog(@"pow(4.61,9.6): %f", pow(4.61,9.6)); // 2352495.946271
NSLog(@"pow(6,2): %f", pow(6,2)); // 36.000000
  • Marius

    Sehr nett. Danke!

  • Timi

    fabs war das was ich brauchte! THX