Онлайн-курсы по JavaScript
Выбрать другой урок из курса
Обсуждение
Теория урока

Арифметические операции в JavaScript

Вы знакомы с арифметикой? Умеете складывать и вычитать числа? JavaScript тоже умеет складывать и вычитать. В JavaScript есть такие операторы: сложения +, вычитание -, деление /, умножение *, деление с возвратом остатка %.

Пример 1
var one = 121;
var two = 13;
alert(one + two);
alert(one - two);
alert(one * two);
alert(one / two);
alert(one % two);

Усложним пример 1

Пример 2
var answer = ((121 - 12) * 103) + 200;
alert(answer);

Усложним пример 2

Пример 3
var PI = 3.14;
var answer = ((121 - 12) * 103) + PI;
alert(answer);

И третий пример усложним

Пример 4
var PI = 3.14;
var answer = ((121 - 12) * 103) + PI;
var answerEnd = (2 * answer * PI) + (-100);
alert(answerEnd);

И даже так можно сделать

Пример 5
var answer = 101 + (-(-100));
alert(answer);

Но это ерунда, по сравнению с тем, что еще умеет JavaScript. Для этого есть стандартный объект Math с множеством свойств (свойства и есть операции, в данном контексте).

Пример 6
Math.pow(2, 53)     /* -> 2 в степени 53 */
Math.round(0.6)     /* -> 1.0 - округление до ближайшего целого */
Math.ceil(0.6)      /* -> 1.0 - округление вверх */
Math.floor(0.6)     /* -> 0.0 - округление вниз */
Math.abs(-5)        /* -> 5 - модуль, абсолютное значение */
Math.max(x, y, z)   /* -> Возвращает наибольший аргумент */
Math.min(x, y, z)   /* -> Возвращает наименьший аргумент */
Math.random();      /* -> Где число на выходи больше 0, но меньше 1 */
Math.PI             /* -> Число Пи */
Math.E              /* -> Основание натурального логарифма */
Math.sqrt(3)        /* -> Корень квадратный из 3 */
Math.pow(3, 1/3)    /* -> Корень кубический из 3 */
Math.sin(0)         /* -> Тригонометрия: имеются так же Math.cos, Math.atan и другие */
Math.log(10)        /* -> Натуральный логарифм 10 */
Math.log(100) / Math.LN10 /* -> Логарифм 100 по основанию 10 */
Math.log(512) / Math.LN2  /* -> Логарифм 512 по основанию 2 */
Math.exp(3)         /* -> Math.E в кубе */

Как использовать объект Math?

Пример 7
/* Первый пример */
var twoInPow = Math.pow(2, 53);
alert(twoInPow);

/* Второй пример */
var valueRaund = 0.1312;
var answerRaunt = Math.round(valueRaund);
alert(answerRaunt);

/* Третий пример */
var valueRaund = 0.1312;
alert(Math.round(valueRaund));

/* Четвертый пример: поиск наибольшего из трех чисел */
var a = 12, b = 11, c = 10;
alert(Math.max(a, b, c));

В случае выхода из диапазона, потери значащих разрядов или деления на ноль, JavaScript не выдает ошибку. Если результат будет слишком большой и выйдет из диапазона, то будет возвращено специальное значение «бесконечность», выглядит оно так «Infinity».

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

Глобальная переменная NaN означает «не число». Есть одна особенность у этой переменной, операция проверки на равенство (==) всегда возвращает отрицательный результат и даже если его сравнивать с самим собой.

Пример 8
/* Так писать нельзя */
if (x == NaN) { ... }

Чтобы определить, является ли значение переменной x значением NaN, нужно использовать конструкцию, которая ниже. Эта проверка будет иметь значение true только тогда, когда x будет равен NaN

Пример 9
/* Так можно */
if (x != x) { ... }

Дополнение: оформление кода

Допустим вам нужно вывести два числа 12 и 16. Вероятно вы сделаете так:

Пример 10
var one = 12, two = 16;
document.write(one);
document.write(two);

А в ответ получите 1216, то есть пробела между ними не будет. Встает вопрос: Как добавить пробел?

Пример 11
/* Первый способ решения */
var one = 12, two = 16;
document.write(one + " ");
document.write(two);

/* Второй, более компактный */
var one = 12, two = 16;
document.write(one + " " + two);

Как видите, нужно просто склеить переменную с пробелом (пробел между кавычек). Склеить строки, значит поставить между ними знак плюс (+)

Пример 12
document.write("Строка 1" + "Строка 2");
document.write("Строка 1" + " " + "Строка 2");
<
×
>
Не публикуйте свой код прямо в комментариях. Во-первых, он плохо отображается. Во-вторых, он может содержать для кого-то «спойлеры», т.е. ответы на практику. Воспользуйтесь специальными сервисами: cssdeck.com или jsfiddle.net.
Комментарии, содержащие код (пару строк не считается), будут безжалостно удаляться.