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.