JavaScript. Подробное руководство, 6-е издание
Определенные операторы в языке JavaScript неявно выполняют преобразования и иногда могут использоваться для преобразования типов. Если один из операндов оператора
является строкой, то другой операнд также преобразуется в строку. Унарный оператор<b>+</b>преобразует свой операнд в число. А унарный оператор<b>+</b>преобразует операнд в логическое значение и инвертирует его. Все это стало причиной появления следующих своеобразных способов преобразования типов, которые можно встретить на практике:<b>!</b><b>x + "" // То же, что и String(х)</b><b>+x // То же, что и Number(x). Можно также встретить x-0</b><b>!!x //То же, что и Boolean(x). Обратите внимание на два знака !</b>Форматирование и парсинг чисел являются наиболее типичными задачами, решаемыми компьютерными программами, и потому в JavaScript имеются специализированные функции и методы, обеспечивающие более полный контроль над преобразованиями чисел в строки и строк в числа.
Метод
класса<b>toString()</b>принимает необязательный аргумент, определяющий основание системы счисления для преобразования. Если этот аргумент не определен, преобразование выполняется в десятичной системе счисления. Но вы можете производить преобразование в любой системе счисления (с основанием от 2 до 36). Например:<b>Number</b><b>var n = 17;</b><b>binary_string = n.toString(2); // Вернет "10001"</b><b>octal_string = "0" + n.toString(8); // Вернет "021" </b><b>hex_string = "Ox" + n.toString(16); // Вернет "0x11"</b>При выполнении финансовых или научных расчетов может потребоваться обеспечить преобразование чисел в строки с точностью до определенного числа десятичных знаков или до определенного количества значащих разрядов или получать представление чисел в экспоненциальной форме. Для подобных преобразований чисел в строки класс
определяет три метода. Метод<b>Number</b>преобразует число в строку, позволяя указывать количество десятичных цифр после запятой. Он никогда не возвращает строки с экспоненциальным представлением чисел. Метод<b>toFixed()</b>преобразует число в строку в экспоненциальном представлении, когда перед запятой находится единственный знак, а после запятой следует указанное количество цифр (т. е. количество значащих цифр в строке получается на одну больше, чем было указано при вызове метода). Метод<b>toExponential()</b>преобразует число в строку, учитывая количество заданных значащих разрядов. Если заданное количество значащих разрядов оказывается недостаточным для отображения всей целой части числа, преобразование выполняется в экспоненциальной форме. Обратите внимание, что все три метода округляют последние цифры или добавляют нули, если это необходимо. Взгляните на следующие примеры:<b>toPrecision()</b><b>var п = 123456.789;</b><b>n.toFixed(0); // ”123457"</b><b>n.toFixed(2); // "123456.79"</b><b>n.toFixed(5); // "123456.78900" </b><b>n.toExponential(1); // "1.2e+5"</b><b>n.toExponential(3); // "1.235Є+5"</b><b>n.toPrecision(4); // "1.235e+5"</b><b> n.toPrecision(7); // "123456.8"</b><b>n.toPrecision(IO);// "123456.7890"</b>Если передать строку функции преобразования
, она попытается разобрать эту строку как литерал целого или вещественного числа. Эта функция работает только с десятичными целыми числами и не допускает наличие в строке завершающих символов, не являющихся частью литерала числа. Функции<b>Number()</b>и<b>parseInt()</b>(это глобальные функции, а не методы какого-либо класса) являются более гибкими. Функция<b>parseFloat()</b>анализирует только целые числа, тогда как функция<b>parseInt()</b>позволяет анализировать строки, представляющие и целые, и вещественные числа. Если строка начинается с последовательности «Ох» или «ОХ», функция<b>parseFloat()</b>интерпретирует ее как представление шестнадцатеричного числа. [2] Обе функции,<b>parseInt()</b>, пропускают начальные пробельные символы, пытаются разобрать максимально возможное количество символов числа и игнорируют все, что следует за ними. Если первый непробельный символ строки не является частью допустимого числового литерала, эти функции возвращают значение<b>parseInt() и parseFloat()</b>:<b>NaN</b><b>parseInt("3 blind mice") // => 3</b><b>parseFloat("3.14 meters") // => 3.14</b><b>parseInt("-12.34") // => -12</b><b>parseInt("0xff") // => 255</b><b>parseInt("0xFF") // => 255</b><b>parseInt("-0xFF") // => -255</b><b>parseFloat(".1") // => 0.1</b><b>parseInt("0.1") // => 0</b><b>parseInt(".1") // => NaN: целые числа не могут начинаться с "."</b><b>parseFloat("$72.47"); // => NaN: числа не могут начинаться с "$"</b>Функция
принимает второй необязательный аргумент, определяющий основание системы счисления для разбираемого числа. Допустимыми являются значения от 2 до 36. Например:<b>parseInt()</b>