Math в JavaScript
Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали, что такое Array в Javascript. В данной статье я бы хотел рассказать об объекте Math в Javascript. В языке Javascript, как и во всех других языках программирования, существуют математические операции. Для работы с этими операциями используется объект Math в Javascript. У данного объекта есть методы (функции) и свойства. Как всегда, все методы будем рассматривать на примерах. Начнем с вывода наиболее встречаемых в математике констант: числа "PI" и числа "E":
<html> <head> <meta charset="utf-8"/> </head> <body> <script type="text/javascript"> document.write(Math.PI+"</br>"); document.write(Math.E+"</br>"); </script> </body> </html>
В данном случае мы увидим чему равны данные константы. Для того, чтобы не нагромождать статью повторяющимся кодом, буду писать сюда только то, что нужно будет вставить между тегами <script>..</script>.
Случайное число можно задать с помощью метода Math.random(). Причем число задаётся в диапазоне от 0 до 1. Давайте с вами выведем случайное число от 0 до 10:
document.write(10 * Math.random());
В данном случае будет выведено число с плавающей точкой. Допустим мы хотим, чтобы число было целое.
Для этого используется другой метод — Math.round(). Он округляет согласно стандартным правилам округления (если меньше 0,5 — округление в сторону меньшего числа, если >= 0,5 — округление в сторону большего числа):
var chislo = 10 * Math.random(); document.write(chislo + " | Округление = " + Math.round(chislo));
В данном случае вы увидите, что округление идёт по всем правилам.
Если мы хотим принудительно округлить до меньшего числа (кто-то говорит "отбросить дробную часть"), то необходимо использовать метод Math.floor():
var chislo = 10 * Math.random(); document.write(chislo + " | Округление до меньшего = " + Math.floor(chislo));
Метод Math.ceil() округляет до большего:
var chislo = 10 * Math.random(); document.write(chislo + " | Округление до большего = " + Math.ceil(chislo));
Метод Math.pow() используется для того, чтобы возвести число в степень. В качестве первого параметра указывается само число, в качестве второго параметра — степень числа. Давайте на примерах посмотрим результат выполнения данного метода:
document.write(Math.pow(2,4) + "</br>"); //выведет 16 document.write(Math.pow(2,-1) + "</br>"); //выведет 0.5 document.write(Math.pow(2,-.5) + "</br>"); //выведет 0.7 document.write(Math.pow(2,.5) + "</br>"); //выведет 1.4
Давайте подумаем, почему "2 в (-1)" степени это 0.5. С точки зрения работы с дробями "2 в (-1)" это 1/2 = 0.5. Думаю, с остальными примерами вопросов не должно быть.
Метод Math.max() возвращает наибольшее число из чисел, указанных в методе. Если в скобках ничего не указывать, то будет возращено -Infinity (бесконечность):
document.write(Math.max(2,4,-3,-10,20) + "</br>"); //выведет 20 document.write(Math.max() + "</br>"); //-infinity
Метод Math.min() возвращает наименьшее число из чисел, указанных в методе. Если в скобках ничего не указывать, то будет возращено Infinity (беконечность):
document.write(Math.min(2,4,-3,-10,20) + "</br>"); //выведет -10 document.write(Math.min() + "</br>"); //infinity
Метод Math.sqrt() — это корень квадратный из данного числа, указанного в скобках. Возвращает число, квадрат которого равен числу в скобках. Вроде всё просто, а как-то мудрено написал (ну да ладно). Если передать в качестве параметра отрицательное число, то будет возращено NaN. Пример:
document.write(Math.sqrt(9) + "</br>"); //выведет 3 document.write(Math.sqrt(10) + "</br>"); //выведет 3.16 document.write(Math.sqrt(-10) + "</br>"); //выведет NaN
Чуть не забыл один из основных метод — Math.abs(), который возвращает модуль числа. Кто забыл, что такое модуль числа, напоминаю:
Модуль действительного числа — это абсолютная величина этого числа. Попросту говоря, при взятии модуля нужно отбросить от числа его знак.
Сразу пример:
document.write(Math.abs(10) + "</br>"); //выведет 10 document.write(Math.abs(-10) + "</br>"); //выведет 10
Метод Math.exp(x) возвращает e в степени x, где e=2.71827. Любое число в нулевой степени есть единица. Давайте проверим это:
document.write(Math.exp(0) + "</br>"); //выведет 1, действительно работает.
Метод Math.log(x) возвращает натуральный логарифм числа. Давайте попробуем передать квадрат константы E:
document.write(Math.log(Math.E * Math.E) + "</br>"); //выведет 2, всё правильно.
Возникает вопрос: если есть функция натурального логарифма, то почему нет, к примеру, функции десятичного логарифма (lg(100) = 2). Давайте реализуем данную функцию, используя натуральный логарифм. Из школьной математики loga(b) = ln(b)/ ln(a). Тогда получается, что lg(100) = ln(100) / ln(10):
document.write(Math.log(100) / Math.log(10) + "</br>"); //выведет 2, всё верно
Также существует возможность работы с тригонометрическими функциями. Описывать их все не буду, просто приведу пример:
var x = 0.5; document.write(Math.sin(x) + "<br>"); //Синус числа document.write(Math.cos(x) + "<br>"); //Косинус числа document.write(Math.tan(x) + "<br>"); //Тангенс числа document.write(Math.asin(x) + "<br>"); //Арксинус числа document.write(Math.acos(x) + "<br>"); //Арккосинус числа document.write(Math.atan(x) + "<br>"); //Арктангенс числа.
В качестве домашнего задания разберите все примеры из данной статьи.
В данной статье вы узнали, как работать с объектом Math в Javascript.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.