JavaScript. Подробное руководство, 6-е издание, стр. 18

<b>Oxff           // 15*16 + 15 = 255 (по основанию 10)</b>

<b>0xCAFE911</b>

Хотя стандарт ECMAScript не поддерживает представление целых литералов в восьмеричном формате (по основанию 8), некоторые реализации JavaScript допускают подобную возможность. Восьмеричный литерал начинается с цифры 0, за которой могут следовать цифры от 0 до 7. Например:

<b>0377 // 3*64 + 7*8 + 7 = 255 (по основанию 10)</b>

Поскольку некоторые реализации поддерживают восьмеричные литералы, а некоторые нет, никогда не следует писать целый литерал с ведущим нулем, ибо нельзя сказать наверняка, как он будет интерпретирован данной реализацией - как восьмеричное число или как десятичное. В строгом (strict) режиме, определяемом стандартом ECMAScript 5 (раздел 5.7.3), восьмеричные литералы явно запрещены.

3.1.2. Литералы вещественных чисел

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

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

Ниже приводится более лаконичное определение синтаксиса:

<b>[цифры][.цифры][(Е|е)[(+|-)]цифры]</b>

Например:

<b>3.14</b>

<b>2345.789</b>

<b>.333333333333333333</b>

<b>6.02е23 // 6.02 х 10<sup>23</sup></b>

<b>1.4738223Е-32 // 1.4738223 х 10<sup>-32</sup></b>

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

Обработка чисел в языке JavaScript выполняется с помощью арифметических операторов. В число таких операторов входят: оператор сложения

<b>+</b>
, оператор вычитания
<b>-</b>
, оператор умножения
<b>*</b>
, оператор деления
<b>/</b>
и оператор деления по модулю
<b>%</b>
(возвращает остаток от деления). Полное описание этих и других операторов можно найти в главе 4.

Помимо этих простых арифметических операторов JavaScript поддерживает более сложные математические операции, с помощью функций и констант, доступных в виде свойств объекта Math:

<b>Math.pow(2,53) // =&gt; 9007199254740992: 2 в степени 53</b>

<b>Math.round(.6) // =&gt; 1.0: округление до ближайшего целого </b>

<b>Math.ceil(.6)  // =&gt; 1.0: округление вверх </b>

<b>Math.floor(.6) // =&gt; 0.0: округление вниз </b>

<b>Math.abs(-5)   // =&gt; 5: абсолютное значение </b>

<b>Math.max(x,y,z)// Возвращает наибольший аргумент </b>

<b>Math.min(x,y,z)// Возвращает наименьший аргумент </b>

<b>Math.random()  // Псевдослучайное число х, где 0 &lt;= х &lt; 1.0</b>

<b>Math.PI        // пи: длина окружности / диаметр </b>

<b>Math.E         // е: Основание натурального логарифма </b>

<b>Math.sqrt(3)   // Корень квадратный из 3 </b>

<b>Math.pow(3, 1/3) // Корень кубический из 3</b>

<b>Math.sin(0)    // Тригонометрия: имеются также Math.cos, Math.atan и другие.</b>

<b>Math.log(10)   // Натуральный логарифм 10</b>

<b>Math.log(100)/Math.LN10 // Логарифм 100 по основанию 10 (десятичный)</b>

<b>Math.log(512)/Math.LN2  // Логарифм 512 по основанию 2</b>

<b>Math.exp(3)    // Math.E в кубе</b>

Полный перечень всех математических функций, поддерживаемых языком JavaScript, можно найти в справочном разделе с описанием объекта Math.

Арифметические операции в JavaScript не возбуждают ошибку в случае переполнения, потери значащих разрядов или деления на ноль. Если результат арифметической операции окажется больше самого большого представимого значения (переполнение), возвращается специальное значение «бесконечность», которое в JavaScript обозначается как

<b>Infinity</b>
. Аналогично, если абсолютное значение отрицательного результата окажется больше самого большого представимого значения, возвращается значение «отрицательная бесконечность», которое обозначается как
<b>-Infinity</b>
. Эти специальные значения, обозначающие бесконечность, ведут себя именно так, как и следовало ожидать: сложение, вычитание, умножение или деление бесконечности на любое значение дают в результате бесконечность (возможно, с обратным знаком).

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

Деление на ноль не считается ошибкой в JavaScript: в этом случае просто возвращается бесконечность или отрицательная бесконечность. Однако есть одно исключение: операция деления нуля на ноль не имеет четко определенного значения, поэтому в качестве результата такой операции возвращается специальное значение «не число» (not-a-number), которое обозначается как

<b>NaN</b>
. Значение
<b>NaN</b>
возвращается также при попытке разделить бесконечность на бесконечность, извлечь квадратный корень из отрицательного числа или выполнить арифметическую операцию с нечисловыми операндами, которые не могут быть преобразованы в числа.

В JavaScript имеются предопределенные глобальные переменные

<b>Infinity</b>
и
<b>NaN</b>
, хранящие значения положительной бесконечности и «не число». В стандарте ECMAScript 3 эти переменные доступны для чтения/записи и могут изменяться в программах. Стандарт ECMAScript 5 исправляет эту оплошность и требует, чтобы эти переменные были доступны только для чтения. Объект Number предоставляет альтернативные представления некоторых значений, доступные только для чтения даже в ECMAScript 3. Например: