Matematyka, liczby, obliczenia. Obiekt Math w JavaScript.

Math calc

Poziom średnio-zaawansowany

Jeśli chodzi o inne obiekty JavaScriptu, omówiliśmy je (lub omówimy) przy okazji innych artykułów.

Dziś zajmiemy się dokładniej liczbami, obiektem Number, obliczeniami, weźmiemy pod lupę obiekt Math w JavaScript.

Obiekt Number

Jest to obiekt podstawowy, do obsługi liczb. Posiada własności dla stałych liczbowych:

var najwiekszaLiczba = Number.MAX_VALUE;
var najmniejszaLiczba = Number.MIN_VALUE;
var nieskonczonosc = Number.POSITIVE_INFINITY;
var minusNieskonczonosc = Number.NEGATIVE_INFINITY;
var nieJestLiczba = Number.NaN;

Metody obiektu Number:

Notacja naukowa, digits określa miejsca po przecinku:

number.toExponential([digits]);

Notacja dziesiętna:

number.toFixed([digits]);

Określenie precyzji:

number.toPrecision()

Przykład – precyzja po przecinku:

var number = new Number(51.967654321);
number.toPrecision(5); // da w wyniku 51.968

Zwraca numer jako łańcuch, „podstawa” określa system liczbowy (domyślny, 2, 8, 16).

number.toString([podstawa])

Zwraca podstawową wartość reprezentowaną przez obiekt Number (przechowywaną wartość):

number.valueOf()

Wyciąga liczbę zmiennoprzecinkową z wyrażenia (łańcucha):

number.parseFloat(string)

Wyciąga liczbę całkowitą:

number.parseInt(string[, radix])

gdzie radix – podstawa powyższego łańcucha (np. 2 – bin, 10 – dec).

Jeśli podstawa nie jest podana lub jest podana jako 0, JavaScript przyjmuje podstawę 16, jeśli łańcuch wejściowy zaczyna się od „0x”.

Przykład – użycie parseInt:

parseInt("F", 16);
parseInt("17", 8);
parseInt("15", 10);
parseInt(15.99, 10);
parseInt("FXX123", 16);
parseInt(1111, 2);
parseInt("15*3", 10);
parseInt("12", 13);

Wszystkie powyższe przykłady zwracają w wyniku 15.

Obiekt posiada także właściwości prototype oraz constructor. Może być zatem używany jako konstruktor instancji obiektu, np.:

var num = new Number(123);
alert(num);

Inaczej sytuacja wygląda w przypadku obiektu Math.

Obiekt Math w JavaScript

Wszystkie metody i właściwości obiektu Math są statyczne. Oznacza to, że są dostępne bez instancji obiektu, a wywołanie w postaci var x = new Math() jest błędne (powoduje błąd TypeError).

Przykład – użycie obiektu Math:

alert(Math.abs(-123)); // 123

alert(Math.PI);

Właściwości obiektu Math

– E – stała matematyczna e (stała Eulera, 2,71…)

– LN2 – logarytm naturalny z 2 (0.693)

– LN10 – logarytm naturalny 10 (2.302)

– LOG2E – logarytm o podstawie 2 z liczby E (1.442)

– LOG10E – logarytm o podstawie 10 z liczby E (0.434)

– PI – stała matematyczna PI (3.141593)

– SQRT1_2 – pierwiastek kwadratowy z 1/2 (0.707)

– SQRT2 – pierwiastek kwadratowy z 2 (1.414)

 
Metody obiektu Math

– abs(number) – zwraca wartość absolutną liczby

– acos(number) – zwraca arcus cosinus z liczby (podanej w radianach)

– asin(number) – zwraca arcus sinus z liczby (podanej w radianach)

– atan(number) – zwraca arcus tangens z liczby (podanej w radianach)

– atan2(y, x) – zwraca arcus tangens ilorazu argumentów, odpowiednik arcus tangens y / x

– ceil(number) – zwraca najmniejszą liczbę całkowitą, większą lub równą (>=) podanej liczbie

– cos(number) – zwraca cosinus liczby

– exp(x) – zwraca e (Math.E) podniesione do potęgi podanej jako argument, odpowiednik Math.pow(Math.E, x)


– floor(number) – zwraca największą liczbę całkowitą mniejszą lub równą (<=) podanej liczbie – log(x) – zwraca logarytm naturalny z x

– max([val1 [ , val2 [ , …]]]) – zwraca największą liczbę spośród podanych

– min([val1 [ , val2 [ , …]]]) – zwraca najmniejszą liczbę

– pow(base, exponent) – zwraca wartość liczby base podniesionej do potęgi exponent

– random() – generuje wartość pseudolosową z przedziału 0 i 1

– round(number) – zwraca zaokrąglenie liczby to najbliższej liczby całkowitej

– sin(number) – zwraca sinus liczby

– sqrt(number) – zwraca pierwiastek kwadratowy liczby

– tan(number) – zwraca tangens liczby

Poniżej kilka przykładów użycia.

Przykład – zaokrąglanie liczb w JavaScript:

alert(Math.round(4.7)); // 5

// do 2 liczb po przecinku
alert(Math.round(27.451 * 100) / 100); // 27.45

// do jednej liczby po przecinku
alert(Math.round(27.451 * 10) / 10); // 27.5

// do 3 liczb po przecinku
alert(Math.round(7.111111 * 1000) / 1000);  // 7.111

alert(Math.ceil(0.60)); // 1

alert(Math.ceil(-5.4)); // -5

Zauważmy konieczność mnożenia liczby przez 10, 100 lub 1000, a później dzielenia całości przez 10, 100 lub 1000, zależnie od przypadku.

Przykład – losowanie / liczby losowe w JavaScript:

alert(Math.random());

alert(Math.floor(Math.random() * 123));

Przykład – min / max:

alert(Math.min(1,2,3));

alert(Math.max(1,2,3));

Przykład – potęgowanie i pierwiastkowanie w JavaScript:

var delta = Math.pow(b, 2) - (4 * a * c);

var sqrtDelta = Math.sqrt(delta);

Podsumowanie

Przedstawione informacje, plus oczywiście znajomość matematyki, wystarczą do sprawnego wykonywania obliczeń w JavaScript. Naprawdę przyda się to nieraz, szczególnie przy pisaniu gier, czy też programowaniu bardziej zaawansowanych operacji na mapach (np. Google Maps).

Programista WWW i aplikacji mobilnych z wieloletnim doświadczeniem, początkujący bloger. Pasjonat programowania, nowych technologii, e-commerce, a także sportu i motoryzacji.

Twitter LinkedIn Google+ Skype Xing 

Podaj dalej: Share on Facebook1Tweet about this on TwitterShare on Google+2Share on LinkedIn1Share on Tumblr0Digg thisEmail this to someonePin on Pinterest1
Możesz skomentować leave a response, lub podać trackback z własnej strony.