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

Определенные операторы в языке JavaScript неявно выполняют преобразования и иногда могут использоваться для преобразования типов. Если один из операндов оператора

<b>+</b>
является строкой, то другой операнд также преобразуется в строку. Унарный оператор
<b>+</b>
преобразует свой операнд в число. А унарный оператор
<b>!</b>
преобразует операнд в логическое значение и инвертирует его. Все это стало причиной появления следующих своеобразных способов преобразования типов, которые можно встретить на практике:

<b>x + &quot;&quot; // То же, что и String(х)</b>

<b>+x // То же, что и Number(x). Можно также встретить x-0</b>

<b>!!x //То же, что и Boolean(x). Обратите внимание на два знака !</b>

Форматирование и парсинг чисел являются наиболее типичными задачами, решаемыми компьютерными программами, и потому в JavaScript имеются специализированные функции и методы, обеспечивающие более полный контроль над преобразованиями чисел в строки и строк в числа.

Метод

<b>toString()</b>
класса
<b>Number</b>
принимает необязательный аргумент, определяющий основание системы счисления для преобразования. Если этот аргумент не определен, преобразование выполняется в десятичной системе счисления. Но вы можете производить преобразование в любой системе счисления (с основанием от 2 до 36). Например:

<b>var n = 17;</b>

<b>binary_string = n.toString(2); // Вернет &quot;10001&quot;</b>

<b>octal_string = &quot;0&quot; + n.toString(8); // Вернет &quot;021&quot; </b>

<b>hex_string = &quot;Ox&quot; + n.toString(16); // Вернет &quot;0x11&quot;</b>

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

<b>Number</b>
определяет три метода. Метод
<b>toFixed()</b>
преобразует число в строку, позволяя указывать количество десятичных цифр после запятой. Он никогда не возвращает строки с экспоненциальным представлением чисел. Метод
<b>toExponential()</b>
преобразует число в строку в экспоненциальном представлении, когда перед запятой находится единственный знак, а после запятой следует указанное количество цифр (т. е. количество значащих цифр в строке получается на одну больше, чем было указано при вызове метода). Метод
<b>toPrecision()</b>
преобразует число в строку, учитывая количество заданных значащих разрядов. Если заданное количество значащих разрядов оказывается недостаточным для отображения всей целой части числа, преобразование выполняется в экспоненциальной форме. Обратите внимание, что все три метода округляют последние цифры или добавляют нули, если это необходимо. Взгляните на следующие примеры:

<b>var п = 123456.789;</b>

<b>n.toFixed(0); // ”123457&quot;</b>

<b>n.toFixed(2); // &quot;123456.79&quot;</b>

<b>n.toFixed(5); // &quot;123456.78900&quot; </b>

<b>n.toExponential(1); // &quot;1.2e+5&quot;</b>

<b>n.toExponential(3); // &quot;1.235Є+5&quot;</b>

<b>n.toPrecision(4); // &quot;1.235e+5&quot;</b>

<b> n.toPrecision(7); // &quot;123456.8&quot;</b>

<b>n.toPrecision(IO);// &quot;123456.7890&quot;</b>

Если передать строку функции преобразования

<b>Number()</b>
, она попытается разобрать эту строку как литерал целого или вещественного числа. Эта функция работает только с десятичными целыми числами и не допускает наличие в строке завершающих символов, не являющихся частью литерала числа. Функции
<b>parseInt()</b>
и
<b>parseFloat()</b>
(это глобальные функции, а не методы какого-либо класса) являются более гибкими. Функция
<b>parseInt()</b>
анализирует только целые числа, тогда как функция
<b>parseFloat()</b>
позволяет анализировать строки, представляющие и целые, и вещественные числа. Если строка начинается с последовательности «Ох» или «ОХ», функция
<b>parseInt()</b>
интерпретирует ее как представление шестнадцатеричного числа. [2] Обе функции,
<b>parseInt() и parseFloat()</b>
, пропускают начальные пробельные символы, пытаются разобрать максимально возможное количество символов числа и игнорируют все, что следует за ними. Если первый непробельный символ строки не является частью допустимого числового литерала, эти функции возвращают значение
<b>NaN</b>
:

<b>parseInt(&quot;3 blind mice&quot;) // =&gt; 3</b>

<b>parseFloat(&quot;3.14 meters&quot;) // =&gt; 3.14</b>

<b>parseInt(&quot;-12.34&quot;) // =&gt; -12</b>

<b>parseInt(&quot;0xff&quot;) // =&gt; 255</b>

<b>parseInt(&quot;0xFF&quot;) // =&gt; 255</b>

<b>parseInt(&quot;-0xFF&quot;) // =&gt; -255</b>

<b>parseFloat(&quot;.1&quot;) // =&gt; 0.1</b>

<b>parseInt(&quot;0.1&quot;) // =&gt; 0</b>

<b>parseInt(&quot;.1&quot;) // =&gt; NaN: целые числа не могут начинаться с &quot;.&quot;</b>

<b>parseFloat(&quot;$72.47&quot;); // =&gt; NaN: числа не могут начинаться с &quot;$&quot;</b>

Функция

<b>parseInt()</b>
принимает второй необязательный аргумент, определяющий основание системы счисления для разбираемого числа. Допустимыми являются значения от 2 до 36. Например: