JavaScript с нуля - [37]

Шрифт
Интервал

Скукота!

Буду с вами честен. Разбор всех предлагаемых объектом Math возможностей был бы скучен. Если вы не фанат этой темы, то я предлагаю пробежаться по следующим разделам и возвращаться к ним уже по мере необходимости. Объект Math никуда не уйдет — друзей у него нет, поэтому он будет преданно ждать вас и никуда не денется.

Константы

Чтобы избавить вас от необходимости определять такие математические постоянные, как число π, постоянная Эйлера, натуральный логарифм и т. д., объект Math определяет большинство распространенных констант за вас (табл. 16.2).

Табл. 16.2. Константы

Использование

Что обозначает

Math.E

Постоянная Эйлера

Math.LN2

Натуральный логарифм 2

Math.LN10

Натуральный логарифм 10

Math.LOG2E

Log E по основанию 2

Math.LOG10E

Log E по основанию 10

Math.PI

3,14159 (это все, что я помню, и мне лень искать остальное!)

Math.SQRT1_2

1

2


Math.SQRT2

2


Из всех этих констант я чаще всего использовал Math.PI:

Ее вы будете использовать везде, от рисования кругов на экране и до определения тригонометрических выражений. Честно говоря, даже и не помню, использовал ли я вообще другие константы. Вот пример функции, возвращающей длину окружности по заданному радиусу:

function getCircumference(radius) {

return 2 * Math.PI * radius;

}


console.log(getCircumference(2));

Используется Math.PI и все прочие константы так же, как и любая переменная с именем.

Округление чисел

Ваши числа часто будут содержать ненужную точность:

let position = getPositionFromCursor(); // 159.3634493939

Чтобы облегчить округление таких чисел до разумного целочисленного значения, используются функции Math.round(), Math.ceil() и Math.floor(), в которые число передается в виде аргумента (табл. 16.3).

Табл. 16.3. Функции округления

Функция

Действие

Math.round()

Возвращает число, округленное до ближайшего целого числа. При этом округление происходит вверх, если аргумент больше или равен 0,5. Если аргумент меньше 0,5, округление производится до текущего целого числа

Math.ceil()

Возвращает число, которое больше или равно вашему аргументу

Math.floor()

Возвращает число, которое меньше или равно вашему аргументу

Легче всего понять эту таблицу, посмотрев функции в действии:

Math.floor(.5); // 0

Math.ceil(.5); // 1

Math.round(.5); // 1


Math.floor(3.14); // 3

Math.round(3.14); // 3

Math.ceil(3.14); // 4


Math.floor(5.9); // 5

Math.round(5.9); // 6

Math.ceil(5.9); // 6

Эти функции всегда округляют до целого числа. Если вы хотите произвести округление до точного набора цифр, то ознакомьтесь со второй половиной статьи «Округление чисел в JavaScript» (https://www.kirupa.com/html5/rounding_numbers_in_javascript.htm).

Тригонометрические функции

Больше всего мне нравится, что объект Math дает удобный способ обращаться почти что к любым тригонометрическим функциям, которые могут понадобиться (табл. 16.4).

Для их использования просто передайте число в качестве аргумента:

Math.cos(0); // 1

Math.sin(0); // 0

Math.tan(Math.PI / 4); // 1

Math.cos(Math.PI); // 1

Math.cos(4 * Math.PI); // 1

Табл. 16.4. Тригонометрические функции

Функция

Действие

Math.cos()

Вычисляет косинус аргумента

Math.sin()

Вычисляет синус аргумента

Math.tan()

Вычисляет тангенс аргумента

Math.acos ()

Вычисляет арккосинус аргумента (крутое название, да?)

Math.asin()

Вычисляет арксинус аргумента

Math.atan ()

Вычисляет арктангенс аргумента

Эти функции получают значения в виде радиан. Если же ваши числа представлены в виде градусов, то сначала преобразуйте их в радианы.

Степени и квадратные корни

В табл. 16.5 даны еще несколько функций, присущих объекту Math, а именно Math.pow(), Math.exp() и Math.sqrt().

Табл. 16.5. Функции для вычисления степеней и квадратных корней

Функция

Действие

Math.pow()

Возводит число в заданную степень

Math.exp()

Возводит постоянную Эйлера в заданную степень

Math.sqrt()

Возвращает квадратный корень заданного аргумента

Теперь взглянем на несколько примеров:

Math.pow(2, 4); //эквивалент 2^4 (или 2 * 2 * 2 * 2)

Math.exp(3); //эквивалент Math.E^3

Math.sqrt(16); //4

Обратите внимание, что Math.pow() получает два аргумента. Это, вероятно, первая рассмотренная нами встроенная функция, получающая два аргумента, что даже несколько вдохновляет.

Получение абсолютного значения

Если вам понадобится получить абсолютное значение, просто используйте функцию Math.abs():

Math.abs(37); //37

Math.abs(-6); //6

На этом все.

Случайные числа

Для генерации случайных чисел между 0 и чуть меньше, чем 1, можно использовать функцию Math.random(). Эта функция не получает аргументы, но вы можете легко использовать ее как часть выражения:

let randomNumber = Math.random() * 100;

При каждом вызове этой функции вы увидите случайное число, возвращаемое для Math.random(). Все подробности ее использования для генерации случайных чисел вы можете найти в статье «Случайные числа в JS» (https://www.kirupa.com/html5/random_numbers_js.htm).

КОРОТКО О ГЛАВНОМ

На этом ознакомительная глава, посвященная числам и объекту Math в JavaScript, окончена. Как вы видите, легче уже некуда. JS предоставляет максимально простой подход для работы с этими элементами, а эта глава лишь мельком показала горизонты их возможностей на случай, если вы решите направиться к ним.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.