Математика в 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 позволяет решать довольно большой спектр задач, но злоупортеблять этим не стоит. Не забывайте, что код исполняется инетрпретатором, а вот о низкоуровневой оптимизации вычислений нет и речи, следовательно высокого быстродействия добиться будет очень сложно.
Чаще всего математика на сайтах используется для создания различных калькуляторов или расчёта положения элементов интерфейса. В примере к данному уроку мы рассмотрим скрипт для создания простого калькулятора.