Математика от JavaScript Math
В JavaScript объект Math не требуется создавать, он существует как компактный математический сопроцессор браузера. Math всегда доступен в любом месте JavaScript кода. В него включены основные константы в виде свойств и популярные математические функции в виде методов.
JavaScript Math - это традиционная математика, повседневно необходимая, доступная и простая в использовании.
Свойства Math
Основные математические константы:
- основание натурального логарифма (E);
- натуральный логарифм (LN2, LN10);
- логарифм числа (LOG2E, LOG10E);
- число Пи (PI);
- квадратные корни (SQRT1_2, SQRT2).
Для обращения к свойству глобального объекта JavaScript Math следует указать имя объекта и имя требуемого свойства. Например,
- var exp = Math.E; // константа е ~ 2.718
- var n314 = Math.PI; // число Пи ~ 3.1415
Положительное число и строка
Если требуется получить абсолютное значение числа, используется 'abs' - функция, которая делает любое число положительным.
- Math.abs('-65'); // = 65
- Math.abs(19); // = 19
- Math.abs(0); // = 0
- var iPos = (a / b).toString(10);
- var iPos = (a / b).toString(2);
- var iPos = (a / b).toString(8);
- var iPos = (a / b).toString(16).
Здесь параметр 'rdx' - основание системы счисления, соответственно, десятичная, двоичная, восьмеричная и шестнадцатеричная. Вместо выражения '(a / b)' можно указать имя переменной.
Преобразование по основанию системы счисления - очень полезная функция. Когда нужно сформировать код цвета (записать требуемую последовательность шестнадцатеричных цифр) программно, она просто незаменима.
Многие правила CSS или стили конкретных элементов приходится формировать на лету или в процессе работы сайта. Использование объекта JavaScript Math можно встретить даже на самом простом сайте.
Важно. Выражение:
- var iPos = Math.abs('-1,3');
не сработает как надо.
Результат будет 'NaN'. Разделение целой и дробной части в JavaScript обозначается точкой, а не запятой. Но выражение:
- var iPos = ('100,33').toString();
даст результат: '100,33'. В данном случае написано в стиле JavaScript Math, но результат формируется как строка в строку.
В JavaScript коде часто к серьезным ошибкам ведет не конкретная недоработка алгоритма разработчиком, а ненадлежащий учет особенности языка отсекать все лишнее, что не предусмотрено или не укладывается в синтаксис.
Функции округления вещественных чисел
Возможности объекта JavaScript Math по округлению значений и результатов вычисления выражений очень важны. Они здесь не так обширно представлены, как в других языках, но их функционала вполне достаточно для практически любых задач.
Общеизвестно, что в правилах стилей CSS, свойствах объектов DOM и других элементах требуются целочисленные аргументы. В некоторых случаях требуются значения с дробной частью в одну и или несколько цифр. Помимо привычного (математического) округления - функции Math.round, JavaScript предлагает еще два варианта: в большую сторону (ceil) и в меньшую сторону (floor).
Как правило, численные данные должны быть целочисленными или иметь конкретное количество цифр после запятой. Когда необходимо регулировать положение десятичной точки в числе удобно использовать классическую идею делить (умножать) нужное число деление на 10, 100, 1000...
- var x = Math.round(20.5); // = 21
- var x = Math.ceil(1.1); // = 2
- var x = Math.floor(1.1); // = 1
- var x = Math.floor(1.11*10); // =11
В последнем примере возможности функции math floor javascript код использует несколько некорректно. Хотя многое зависит от логики конкретной задачи. Регулировать положение десятичной точки умножением или делением на 10, 100, 1000, ... удобнее всего после округления, а не перед ним.
Важно. При использовании чисел в качестве аргументов, часто ошибки возникают именно из-за того, что результат вычисления, например, координат или размеров блоков, имеет вещественное или строчное значение, которое не преобразуется в число.
Математические функции
Помимо тригонометрических функций: вычисление синуса (sin), косинуса (cos) и тангенса (tan), объект Math предлагает арксинус (asin), арккосинус (acos) и арктангенс (atan).
Можно также вычислить экспоненту (exp) - "e" в степени, вычислить натуральный логарифм числа (log), извлечь квадратный корень числа (sqrt) и возвести число в нужную степень (pow).
Использование математических функций подобно round, floor и ceil, за исключением функции pow, которая имеет два аргумента: первый - число, второе - степень, в которую его нужно возвести.
Разумеется, тригонометрические функции - хорошая составляющая объекта JavaScript Math, но не следует увлекаться. JavaScript - это не математическая машина, а язык браузера, забота которого обслуживать страницы, объекты DOM, выполнять массу рутинной работы.
Цель объекта лежит в предоставлении достаточного математического аппарата для выполнения конкретной работы, а не для расчетов интегралов, полетов на Луну и создания уникальной анимации. Многие сайты, увлекающиеся математикой, очень медленно работают.
Минимальное, максимальное и случайное значения
Реализация функций min и max предполагает различное количество сравниваемых чисел.
Обе функции принимают некоторое количество аргументов: не обязательно только два аргумента. Результатом min будет минимальное из переданных функции чисел, результатом max - максимальное.
Если хотя бы один аргумент не определен, результатом будет 'NaN'.
Функция random генерирует псевдослучайное число от 0 до 1. Ее применение невероятно широко.
Здесь используется функция padl(), которая дополняет число нулем, если в нем одна цифра. В результате вызова viuq() будет получено относительно случайное число, но достаточно уникальное, чтобы не повториться в течение одного дня.
Если же необходима большая уникальность, можно дважды вызвать функцию и соединить полученные значения или рассчитывать число с учетом секунд.
Придать любому элементу страницы, имени файла или картинки, сессии посетителя, контролировать безопасность при помощи функции random очень быстро и удобно.