Ìàòåìàòèêà â JavaScript
Àâòîð: Àðòåìüåâ Ñåðãåé Èãîðåâè÷ ICQ: 438856621 email: _spin_@bk.ru |
Àðèôìåòè÷åñêèå îïåðàòîðû è ïðèâåäåíèå òèïîâ
JavaScript ïîääåðæèâàåò ñëåäóþùèå àðèôìåòè÷åñêèå îïåðàòîðû:
+ (ïëþñ) | Ñëîæåíèå | 2 + 8 7 + 3 |
10 10 |
- (ìèíóñ) | Âû÷èòàíèå | 2 - 8 7 - 3 |
-6 4 |
* (çâ¸çäî÷êà) | Óìíîæåíèå | 2 * 8 7 * 3 |
16 21 |
/ (ñëýø) | Îáû÷íîå äåëåíèå | 8 / 2 7 / 3 |
4 2.3333 |
% (ïðîöåíò) | Äåëåíèå ïî ìîäóëþ | 8 % 2 7 % 3 |
0 1 |
++ (äâà ïëþñà) | Åäèíè÷íûé èíêðåìåíò | 8++ 7++ |
9 8 |
-- (äâà ìèíóñà) | Åäèíè÷íûé äåêðåìåíò | 8-- 7-- |
7 6 |
Èíòåðåñíàÿ îñîáåííîñòü JavaScript - âîçìîæíîñòü âûïîëíÿòü àðèôìåòè÷åñêèå îïåðàöèè íàä ïåðåìåííûìè ðàçëè÷íîãî òèïà.  ýòîì ñëó÷àå èíòåðïðåòàòîð ñàìîñòîÿòåëüíî âûïîëíÿåò ïðèâåäåíèå òèïîâ è âûïîëíÿåò óêàçàííóþ îïåðàöèþ.  ïðîöåññå âåäåíèÿ òèïîâ èñïîëüçóþòñÿ ñëåäóþùèå ïðàâèëà:
1. Åñëè îäèí èç îïåðàíäîâ - ñòðîêà, òî âñå îñòàëüíûå îïåðàíäû ïðèâîäÿòñÿ ê ñòðîêîâîìó âèäó.
var1 = "Äÿäÿ" var2 = "Âàíÿ" result = var1 + " " + var2 // result = "Äÿäÿ Âàíÿ" mixed = var2 + 100 // mixed = "Âàíÿ100"
2. Âñå ëîãè÷åñêèå îïåðàíäû ïðèâîäÿòñÿ ê ÷èñëîâîìó âèäó, êðîìå ñëó÷àåâ, êîãäà âñå îïåðàíäû â âûðàæåíèè ëîãè÷åñêèå. Ïðè ýòîì true ïðèâîäèòñÿ ê "1", à false - ê "0". Ïðè ñî÷åòàíèè ëîãè÷åñêèõ îïåðàíäîâ ñî ñòðîêàìè - âñå îïåðàäíû ïåðåâîäÿòñÿ â òåêñòîâûé âèä.
var1 = true var2 = true result = var1 + var2 // result = 2 mixed = var2 + 100 // mixed = 101 var3 = "ñòðîêà:" str = var3 + var1 // str = "ñòðîêà:true"
3. Åñëè ïðèâåäåíèå òèïîâ âûïîëíèòü íå óäàëîñü - ðåçóëüòàòîì âûðàæåíèÿ áóäåò "NaN" (íàïðèìåð, ïðè ïîïûòêå ðàçäåëèòü ñòðîêó íà ÷òî-ëèáî).
var1 = "Äÿäÿ" var2 = "Âàíÿ" result = var1 / var2 // result = "NaN" mixed = var2 * true // mixed = "NaN"
Îäíàêî íà íà÷àëüíîì ýòàïå ëó÷øå âîçäåðæàòüñÿ îò ïðèâåäåíèÿ òèïîâ è ôîêóñîâ ñ ïðåîáðàîâàíèåì ðåçóëüòàòîâ. Ýòî èçáàâèò âàñ îò çíà÷èòåëüíîãî ÷èñëà îøèáîê.
Îáúåêò Math
Îáúåêò Math ñîäåðæèò îñíîâíûå ìàòåìàòè÷åñêèå êîíñòàíòû è ñòàíäàðòíûå ìàòåìàòè÷åñêèå ôóíêöèè. Íàèáîëåå ÷àñòî èñïîëüçóåìûå ïðèâåäåíû â òàáëèöå:
Ñâîéñòâà | |
LN10 | Çíà÷åíèå íàòóðàëüíîãî ëîãàðèôìà ÷èñëà 10 |
LN2 | Çíà÷åíèå íàòóðàëüíîãî ëîãàðèôìà ÷èñëà 2 |
PI | Çíà÷åíèå ÷èñëà Ïè |
Ìåòîäû | |
abs(÷èñëî) | Âîçâðàùàåò àáñîëþòíîå çíà÷åíèå ÷èñëà (ò.å. ÷èñëî áåç ó÷¸òà åãî çíàêà) |
ceil(÷èñëî) | Îòêðóãëÿåò ÷èñëî äî áëèæàéøåãî áîëüøåãî öåëîãî (îêðóãëåíèå "ââåðõ") |
exp(÷èñëî) | Âîçâðàùàåò ÷èñëî "e" â ñòåïåíè "÷èñëî" |
floor(÷èñëî) | Îòêðóãëÿåò ÷èñëî äî áëèæàéøåãî ìåíüøåãî öåëîãî (îêðóãëåíèå "âíèç") |
max(÷èñëî1, ÷èñëî2) | Âîçâðàùàåò áîëüøåå èç äâóõ ÷èñåë |
min(÷èñëî1, ÷èñëî2) | Âîçâðàùàåò ìåíüøåå èç äâóõ ÷èñåë |
pow(÷èñëî1, ÷èñëî2) | Âîçâðàùàåò "÷èñëî1", âîçâåä¸ííîå â ñòåïåíü "÷èñëî2" |
random() | Âîçâðàùàåò ñëó÷àéíîå ÷èñëî â äèàïàçîíå îò 0 äî 1 |
round(÷èñëî) | Îêðóãëÿåò ÷èñëî â ñîîòâåòñòâèè ñî ñòàíäàðòíûìè ïðàâèëàìè îêðóãëåíèÿ |
sqrt(÷èñëî) | Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà. |
Èç âñåõ ïåðå÷èñëåííûõ ôóíêöèé èìååò ñìûñë äîïîëíèòåëüíî ïîÿñíèòü òîëüêî ceil(), floor() è round(). Ðàññìîòðèì èõ îòëè÷èÿ íà ïðèìåðå:
num = 1.222 // áëèæàéøåå öåëîå "âíèç" - 1 // áëèæàéøåå öåëîå "ââåðõ" - 2 // àðèôìåòè÷åñêè îòêðóãëÿåòñÿ äî 1 alert(Math.ceil(num)) alert(Math.floor(num)) alert(Math.round(num)) // ïîëó÷èì òðè ñîîáùåíèÿ: 2, 1, 1 num = 1.777 // áëèæàéøåå öåëîå "âíèç" - 1 // áëèæàéøåå öåëîå "ââåðõ" - 2 // àðèôìåòè÷åñêè îòêðóãëÿåòñÿ äî 2 alert(Math.ceil(num)) alert(Math.floor(num)) alert(Math.round(num)) // ïîëó÷èì òðè ñîîáùåíèÿ: 2, 1, 2
Íàáîð ìàòåìàòè÷åñêèõ ôóíêöèé JavaScript ïîçâîëÿåò ðåøàòü äîâîëüíî áîëüøîé ñïåêòð çàäà÷, íî çëîóïîðòåáëÿòü ýòèì íå ñòîèò. Íå çàáûâàéòå, ÷òî êîä èñïîëíÿåòñÿ èíåòðïðåòàòîðîì, à âîò î íèçêîóðîâíåâîé îïòèìèçàöèè âû÷èñëåíèé íåò è ðå÷è, ñëåäîâàòåëüíî âûñîêîãî áûñòðîäåéñòâèÿ äîáèòüñÿ áóäåò î÷åíü ñëîæíî.
×àùå âñåãî ìàòåìàòèêà íà ñàéòàõ èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ ðàçëè÷íûõ êàëüêóëÿòîðîâ èëè ðàñ÷¸òà ïîëîæåíèÿ ýëåìåíòîâ èíòåðôåéñà.  ïðèìåðå ê äàííîìó óðîêó ìû ðàññìîòðèì ñêðèïò äëÿ ñîçäàíèÿ ïðîñòîãî êàëüêóëÿòîðà.