MatematykaObjective-C używa matematyki języka “C”, którą możesz odnaleźć w math.h.

Ostatnio moim celem było liczenie odległości geograficznych pomiędzy różnymi punktami. Znajomość paru funkcji matematycznych przydało się do spełnienia tego celu. Oto prosty wpis objaśniający niektóre funkcję matematyczne.

Potęga stopnia drugiego

NSLog(@"%.f", pow(3,2) ); // 9
NSLog(@"%.f", pow(3,3) ); // 27
NSLog(@"%.f", sqrt(16) ); // 4
NSLog(@"%.f", sqrt(81) ); // 9

Wywyższenie wartości ułamkowej do góry

Zwraca następną liczbę całkowitą.

NSLog(@"res: %.f", ceil(3.000000000001)); // 4
NSLog(@"res: %.f", ceil(3.00)); // 3

Spłaszczenie wartości ułamkowej

Odwrotny kierunek działania do poprzedniej funkcji. Usuwa wartości po przecinku. Zwraca poprzednią wartość całkowitą.

NSLog(@"res: %.f", floor(3.000000000001)); // 3
NSLog(@"res: %.f", floor(3.9999999)); // 3

Zaokrąglenie wartości

Teraz możemy mówić o zaokrąglaniu. Dla 3.5 jest 4 dla 3.46 jest 3.

NSLog(@"res: %.f", round(3.5)); // 4
NSLog(@"res: %.f", round(3.46)); // 3
NSLog(@"res: %.f", round(-3.5)); //-4

Zwracanie mniejszej wartości

Po co pisać wyrażenia if – else.

NSLog(@"res: %.f", fmin(5,10)); // 5
NSLog(@"res: %.f", fmax(5,10)); // 10
NSLog(@"res: %.f", fabs(10)); // 10
NSLog(@"res: %.f", fabs(-10)); // 10

Stałe matematyczne

Stała PI przydaje się do liczenia bearing* i odległości od punktów. Oto stałe zadeklarowane w math.h.

#define M_E         2.71828182845904523536028747135266250   /* e */
#define M_LOG2E     1.44269504088896340735992468100189214   /* log 2e */
#define M_LOG10E    0.434294481903251827651128918916605082  /* log 10e */
#define M_LN2       0.693147180559945309417232121458176568  /* log e2 */
#define M_LN10      2.30258509299404568401799145468436421   /* log e10 */
#define M_PI        3.14159265358979323846264338327950288   /* pi */
#define M_PI_2      1.57079632679489661923132169163975144   /* pi/2 */
#define M_PI_4      0.785398163397448309615660845819875721  /* pi/4 */
#define M_1_PI      0.318309886183790671537767526745028724  /* 1/pi */
#define M_2_PI      0.636619772367581343075535053490057448  /* 2/pi */
#define M_2_SQRTPI  1.12837916709551257389615890312154517   /* 2/sqrt(pi) */
#define M_SQRT2     1.41421356237309504880168872420969808   /* sqrt(2) */
#define M_SQRT1_2   0.707106781186547524400844362104849039  /* 1/sqrt(2) */
 
#define    MAXFLOAT    ((float)3.40282346638528860e+38)

Jak widać nie trzeba tworzyć swoim stałych.