Parseint()

Форматирование чисел

В JavaScript отформатировать вывод числа в соответствии с региональными стандартами (языковыми настройками операционной системы) позволяет метод toLocaleString() .


Например, выполним форматирование числа в соответствии с региональными стандартами, которые установлены в системе по умолчанию:

Var number = 345.46; console.log(number.toLocaleString()); //»345,46″

Например, выполним форматирование числа в соответствии с региональными стандартами России (ru):

Console.log((108.1).toLocaleString(«ru-RU»)); //»108,1″

Данный метод можно также использовать для форматирования числа в виде валюты:

Console.log((2540.125).toLocaleString(«ru-RU»,{style:»currency», currency:»RUB»})); //»2 540,13 ₽» console.log((89.3).toLocaleString(«ru-RU»,{style:»currency», currency:»USD»})); //»89,30 $» console.log((2301.99).toLocaleString(«ru-RU»,{style:»currency», currency:»EUR»})); //»2 301,99 €»

Представление числа в виде процентов:

Console.log((0.45).toLocaleString(«ru-RU»,{style:»percent»})); //»45 %»

Разбить число на разряды (свойство useGrouping):

Console.log((125452.32).toLocaleString(«ru-RU»,{useGrouping:true})); //»125 452,32″

Вывести с число с определённым количеством цифр (2) после запятой:

Console.log((1240.4564).toLocaleString(«ru-RU»,{minimumFractionDigits:2, maximumFractionDigits:2})); //»1 240,46″

Как явно преобразовать строку в число?

Явно привести строку в число можно посредством следующих способов:

1. Использовать унарный оператор + , который необходимо поместить перед значением.

+»7.35″; // 7.35 +»текст»; // NaN

Этот способ пренебрегает пробелами в начале и конце строки, а также \n (переводом строки).

+» 7.35 «; //7.35 +»7.35 \n «; //7.35

Используя данный способ необходимо обратить внимание на то, что пустая строка или строка, состоящая из пробелов и \n , переводится в число 0. Кроме этого она также преобразует тип данных null и логические значения к числу

Null; //0 +true; //1 +false; //0 +» «; //0

2. Функция parseInt . Данная функция предназначена для преобразования аргумента в целое число . В отличие от использования унарного оператора + , данный метод позволяет преобразовать строку в число, в которой не все символы являются цифровыми . Начинает она преобразовывать строку, начиная с первого символа. И как только она встречает символ, не являющийся цифровым, данная функция останавливает свою работу и возвращает полученное число.

ParseInt(«18px»); //18 parseInt(«33.3%»); //33

Данная функция может работать с разными системами счисления (двоичной, восьмеричной, десятичной, шестнадцатеричной). Указание основание системы счисления осуществляется посредством 2 аргумента.

ParseInt(«18px», 10); //18 parseInt(«33.3%», 10); //33 parseInt(«101»,2); //5 parseInt(«B5»,16); //181

Кроме функции parseInt в JavaScript имеется метод Number.parseInt . Данный метод ничем не отличается от функции parseInt и был введён в JavaScript со спецификацией ECMASCRIPT 2015 (6).

3. Функция parseFloat . Функция parseFloat аналогична parseInt , за исключением того что позволяет выполнить преобразование аргумента в дробное число.

ParseFloat(«33.3%»); //33.3

Кроме этого функция parseFloat в отличие от parseInt не имеет 2 аргумента, и следовательно она всегда пытается рассмотреть строку как число в десятичной системе счисления.

ParseFloat(«3.14»); parseFloat(«314e-2»); parseFloat(«0.0314E+2»);

Кроме функции parseFloat в JavaScript имеется метод Number.parseFloat . Данный метод ничем не отличается от функции parseFloat и был введён в JavaScript со спецификацией ECMASCRIPT 2015 (6).

Описание

Функция преобразует первый переданный ей аргумент в строковый тип, интерпретирует его и возвращает целое число или значение . Результат (если не ) является целым числом и представляет собой первый аргумент (), рассматривающийся как число в указанной системе счисления (). Например, основание 10 указывает на преобразование из десятичного числа, 8 — восьмеричного, 16 — шестнадцатеричного и так далее. Если основание больше , то для обозначения цифр больше используются буквы. Например, для шестнадцатеричных чисел (основание 16) используются буквы от  до .

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

Так как некоторые числа включают символ в своём строковом представлении (например, ), то использование для усечения числовых значений может дать неожиданные результаты, когда используются очень малые или очень большие величины. не должна использоваться как замена для .

Если основание системы счисления имеет значение (неопределено) или равно 0 (или не указано), то JavaScript по умолчанию предполагает следующее:

  • Если значение входного параметра начинается с «» или «», за основание системы счисления принимается 16, и интерпретации подвергается оставшаяся часть строки.
  • Если значение входного параметра начинается с «0», за основание системы счисления принимается либо 8, либо 10, в зависимости от конкретной реализации. В спецификации ECMAScript 5 прописано использование 10 (десятичная система), но это поддерживается еще не всеми браузерами, поэтому необходимо всегда указывать основание системы счисления при использовании функции .
  • Если значение входного параметра начинается с любого другого символа, система счисления считается десятичной (основание 10).

Если первый символ строки не может быть преобразован в число, возвращает значение .

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

Для преобразования числа в строку в указанной системе счисления, используйте .

Округление числа в Javascript

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

1. Используя специально предназначенные для этого методы Math.floor , Math.ceil и Math.round . Метод Math.floor округляет дробное число до ближайшего целого вниз, т.е. попросту отбрасывает дробную часть. Math.ceil скругляет дробное число до ближайшего целого вверх. Math.round округляет число вверх или вниз в зависимости от значения дробной части. Если дробная часть больше или равно 0.5, то вверх, иначе скруление осуществляется вниз.

Console.log(Math.floor(7.9)); //7 console.log(Math.ceil(7.2)); //8 console.log(Math.round(7.5)); //8

2. С помощью метода toFixed(точность) . Данный метод округляет дробную часть числа до заданной точности. Результат округления возвращает в виде строки.

Console.log(7.987.toFixed(2)); //»7.99″

Если знаков после запятой для формирования указанной точности числа не хватает, то оно дополняется нулями.

Console.log(7.987.toFixed(5)); //»7.98700″


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

Console.log((1001).toPrecision(2)); //»1.0e+3″ console.log((1001).toPrecision(5)); //»1001.0″ console.log((12.4).toPrecision(1)); //»1e+1″ console.log((12.4).toPrecision(2)); //»12″ console.log((12.4).toPrecision(3)); //»12.4″ console.log((12.4).toPrecision(5)); //»12.400″

4. Используя логические операторы НЕ или ИЛИ.

//посредством двойного логического отрицания console.log(~~7.9); //7 // посредством использования логического ИЛИ с нулём: console.log(7.9^0); //7

Примеры

Пример: Использование

Все следующие примеры возвращают :

parseInt(" 0xF", 16);
parseInt(" F", 16);
parseInt("17", 8);
parseInt(021, 8);
parseInt("015", 10);  //parseInt(015, 10); вернёт 15
parseInt(15.99, 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15*3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);
parseInt("12", 13);

Все следующие примеры возвращают :

parseInt("Hello", 8); // Не является числом
parseInt("546", 2);   // Неверное число в двоичной системе счисления

Все следующие примеры возвращают :

parseInt("-F", 16);
parseInt("-0F", 16);
parseInt("-0XF", 16);
parseInt(-15.1, 10)
parseInt(" -17", 8);
parseInt(" -15", 10);
parseInt("-1111", 2);
parseInt("-15e1", 10);
parseInt("-12", 13);

Все следующие примеры возвращают :

Следующий пример возвращает :

parseInt("0e0", 16);

Совместимость с браузерами

Update compatibility data on GitHub

Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome для Android Firefox для Android Opera для Android Safari on iOS Samsung Internet Node.js
Chrome Полная поддержка 38 Edge Полная поддержка 12 Firefox Полная поддержка 13 Замечания IE Нет поддержки Нет Opera Полная поддержка 25 Safari Полная поддержка 7 WebView Android Полная поддержка 38 Chrome Android Полная поддержка 38 Firefox Android Полная поддержка 14 Замечания Opera Android Полная поддержка 25 Safari iOS Полная поддержка 7 Samsung Internet Android Полная поддержка 3.0 nodejs Полная поддержка 0.12
async iterators Chrome Полная поддержка 63 Edge Полная поддержка 12 Firefox Полная поддержка 57 IE Нет поддержки Нет Opera Полная поддержка 50 Safari Полная поддержка 7 WebView Android Полная поддержка 63 Chrome Android Полная поддержка 63 Firefox Android Полная поддержка 57 Opera Android Полная поддержка 46 Safari iOS Полная поддержка 7 Samsung Internet Android Полная поддержка 8.0 nodejs Полная поддержка 10.0.0
Closing iterators Chrome Полная поддержка 51 Edge Полная поддержка 14 Firefox Полная поддержка 53 IE Нет поддержки Нет Opera Полная поддержка 38 Safari Полная поддержка 7 WebView Android Полная поддержка 51 Chrome Android Полная поддержка 51 Firefox Android Полная поддержка 53 Opera Android Полная поддержка 41 Safari iOS Полная поддержка 7 Samsung Internet Android Полная поддержка 5.0 nodejs Полная поддержка 6.5.0

Как проверить является ли переменная числом

Определить является ли значение переменной числом можно используя один из следующих способов:

1. С использованием функций isNaN и isFinite:

// myVar — переменная if (!isNaN(parseFloat(myVar)) && isFinite(parseFloat(myVar))) { //myVar — это число или может быть приведено к нему };

В виде функции:

// функция function isNumeric(value) { return !isNaN(parseFloat(value)) && isFinite(parseFloat(value)); } // использование var myVar = «12px»; console.log(isNumeric(myVar)); //true

Этот способ позволяет определить является ли указанное значение числом или может быть приведено к нему. Данный вариант не считает числом пустую строку, строку из пробелов, значение null , Infinity , -Infinity , true и false .

2. С использованием оператора typeof и функций isFinite, isNaN:

// функция которая проверяет является ли значение числом function isNumber(value) { return typeof value === «number» && isFinite(value) && !isNaN(value); }; // использование функции isNumber isNumber(18); //true // использование функций для проверки текстовых значений isNumber(parseFloat(«»)); //false isNumber(parseFloat(«Infinity»)); //false isNumber(parseFloat(«12px»)); //true

Эта функция определяет имеет ли указанное значение тип Number, а также не принадлежит ли оно к одному из специальных значений Infinity, -Infinity и NaN. Эсли это так, то данная функция возвращает значение true.

3. С помощью метода ECMAScript 6 Number.isInteger(value) . Данный метод позволяет определить, является ли указанное значение целым числом.

Number.isInteger(«20»); //false, т.к. данный метод не выполняет перевод строки в число Number.isInteger(20); //true, т.к. данное значение является числом

Более строгая функция интерпретации

Иногда необходим более строгий способ интерпретации целочисленных значений. В этом могут помочь регулярные выражения:

var filterInt = function (value) {
  if (/^(\-|\+)?(+|Infinity)$/.test(value))
    return Number(value);
  return NaN;
}

console.log(filterInt('421'));               // 421
console.log(filterInt('-421'));              // -421
console.log(filterInt('+421'));              // 421
console.log(filterInt('Infinity'));          // Infinity
console.log(filterInt('421e+0'));            // NaN
console.log(filterInt('421hop'));            // NaN
console.log(filterInt('hop1.61803398875'));  // NaN
console.log(filterInt('1.61803398875'));     // NaN

Как работает float

Синтаксис:

При применении этого свойства происходит следующее:

  1. Элемент позиционируется как обычно, а затем вынимается из документа потока и сдвигается влево (для ) или вправо (для ) до того как коснётся либо границы родителя, либо другого элемента с .
  2. Если пространства по горизонтали не хватает для того, чтобы вместить элемент, то он сдвигается вниз до тех пор, пока не начнёт помещаться.
  3. Другие непозиционированные блочные элементы без ведут себя так, как будто элемента с нет, так как он убран из потока.
  4. Строки (inline-элементы), напротив, «знают» о и обтекают элемент по сторонам.

Ещё детали:

  1. Элемент при наличии получает .

    То есть, указав элементу, у которого свойство , мы автоматически сделаем его блочным. В частности, для него будут работать .


    Исключением являются некоторые редкие наподобие и (см. )

  2. Ширина -блока определяется по содержимому. ().

  3. Вертикальные отступы элементов с не сливаются с отступами соседей, в отличие от обычных блочных элементов.

Это пока только теория. Далее мы рассмотрим происходящее на примере.

Одно из первых применений , для которого это свойство когда-то было придумано – это вёрстка текста с картинками, отжатыми влево или вправо.

Например, вот страница о Винни-Пухе с картинками, которым поставлено свойство :

Её HTML-код выглядит примерно так:

Каждая картинка, у которой есть , обрабатывается в точности , указанному выше.

Посмотрим, например, как выглядело бы начало текста без float:

  1. Элемент вынимается из документа потока. Иначе говоря, последующие блоки начинают вести себя так, как будто его нет, и заполняют освободившееся место (изображение для наглядности полупрозрачно):
  1. Элемент сдвигается максимально вправо(при ):
  1. Строки, в отличие от блочных элементов, «чувствуют» и уступают ему место, обтекая картинку слева:

При – всё то же самое, только смещается влево (или не смещается, если он и так у левого края), а строки – обтекают справа

Строки и инлайн-элементы смещаются, чтобы уступить место . Обычные блоки – ведут себя так, как будто элемента нет.

Чтобы это увидеть, добавим параграфам фон и рамку, а также сделаем изображение немного прозрачным:

Как видно из рисунка, параграфы проходят «за» . При этом строки в них о знают и обтекают их, поэтому соответствующая часть параграфа пуста.

Свойство можно поставить любому элементу, не обязательно картинке. При этом элемент станет блочным.

Посмотрим, как это работает, на конкретной задаче – сделать рамку с названием вокруг картинки с Винни.

HTML будет такой:

…То есть, включает в себя картинку и заголовок к ней. Добавим стиль с :

Результат:


Заметим, что блок «обернул» картинку и текст под ней, а не растянулся на всю ширину. Это следствие того, что ширина блока с определяется по содержимому.

Top parsefloat Answerers

All Time

144

JaredPar 644k133133 gold badges11581158 silver badges13931393 bronze badges

82

James 101k2828 gold badges154154 silver badges172172 bronze badges

65

moinudin 110k4141 gold badges180180 silver badges212212 bronze badges

46

user113716 289k5959 gold badges423423 silver badges431431 bronze badges

38

Ry- 191k4343 gold badges389389 silver badges397397 bronze badges

36

krillgar 11.1k66 gold badges4040 silver badges7676 bronze badges

36

Phil 118k1717 gold badges184184 silver badges193193 bronze badges

35

shelman 2,6491212 silver badges1616 bronze badges

31

Joe 70.4k1717 gold badges121121 silver badges139139 bronze badges

29

T.J. Crowder 816k152152 gold badges14971497 silver badges15421542 bronze badges

26

17 of 26 25.6k1313 gold badges6363 silver badges8383 bronze badges

25

Rob W 302k6868 gold badges725725 silver badges628628 bronze badges

20

jamie 65977 silver badges55 bronze badges

20

dcp 49.3k1919 gold badges125125 silver badges152152 bronze badges

16

micah 5,66744 gold badges3030 silver badges5757 bronze badges

15

rajuGT 5,65622 gold badges2121 silver badges4242 bronze badges

15

Salman A 219k7676 gold badges380380 silver badges479479 bronze badges

14

Matchu 73.9k1414 gold badges144144 silver badges157157 bronze badges

13

hbejgel 3,95122 gold badges1515 silver badges2525 bronze badges

12

Michel Ayres 5,09788 gold badges5252 silver badges8989 bronze badges

NaN — Not a Number

is a JavaScript reserved word indicating that a number is not a legal number.

Trying to do arithmetic with a non-numeric string will result in (Not a Number):

var x = 100 / «Apple»;  // x will be NaN (Not a Number)

However, if the string contains a numeric value , the result will be a number:

var x = 100 / «10»;     // x will be 10

You can use the global JavaScript function to find out if a value is a number:

var x = 100 / «Apple»;isNaN(x);               // returns true because x is Not a Number

Watch out for . If you use in a mathematical operation, the result will also be :

var x = NaN; var y = 5; var z = x + y;         // z will be NaN

Or the result might be a concatenation:

var x = NaN; var y = «5»; var z = x + y;         // z will be NaN5

is a number: returns :

Сумісність з веб-переглядачами

The compatibility table on this page is generated from structured data. If you’d like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

Update compatibility data on GitHub

Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
Chrome Full support 1 Edge Full support 12 Firefox Full support 1 IE Full support 3 Opera Full support 3 Safari Full support 1 WebView Android Full support 1 Chrome Android Full support 18 Firefox Android Full support 4 Opera Android Full support 10.1 Safari iOS Full support 1 Samsung Internet Android Full support 1.0 nodejs Full support 0.1.100

Browser compatibility

The compatibility table on this page is generated from structured data. If you’d like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

Update compatibility data on GitHub

Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome для Android Firefox для Android Opera для Android Safari on iOS Samsung Internet Node.js
Chrome Полная поддержка 46 Edge Полная поддержка 12 Firefox Полная поддержка 16 IE Нет поддержки Нет Opera Полная поддержка 37 Safari Полная поддержка 8 WebView Android Полная поддержка 46 Chrome Android Полная поддержка 46 Firefox Android Полная поддержка 16 Opera Android Полная поддержка 37 Safari iOS Полная поддержка 8 Samsung Internet Android Полная поддержка 5.0 nodejs Полная поддержка 5.0.0
Chrome Полная поддержка 46 Edge Полная поддержка 12 Firefox Полная поддержка 27 IE Нет поддержки Нет Opera Полная поддержка 37 Safari Полная поддержка 8 WebView Android Полная поддержка 46 Chrome Android Полная поддержка 46 Firefox Android Полная поддержка 27 Opera Android Полная поддержка 37 Safari iOS Полная поддержка 8 Samsung Internet Android Полная поддержка 5.0 nodejs Полная поддержка 5.0.0
Spread in destructuring Chrome Полная поддержка 49 Edge Полная поддержка 79 Firefox Полная поддержка 34 IE Нет поддержки Нет Opera Полная поддержка 37 Safari Полная поддержка 10 WebView Android Полная поддержка 49 Chrome Android Полная поддержка 49 Firefox Android Полная поддержка 34 Opera Android Полная поддержка 37 Safari iOS Полная поддержка 10 Samsung Internet Android Полная поддержка 5.0 nodejs Полная поддержка 6.0.0
Экспериментальная Chrome Полная поддержка 60 Edge Полная поддержка 79 Firefox Полная поддержка 55 IE Нет поддержки Нет Opera Полная поддержка 47 Safari Полная поддержка 11.1 WebView Android Полная поддержка 60 Chrome Android Полная поддержка 60 Firefox Android Полная поддержка 55 Opera Android Полная поддержка 44 Safari iOS Полная поддержка 11.3 Samsung Internet Android Полная поддержка 8.2 nodejs Полная поддержка 8.3.0

ブラウザーの互換性

このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 https://github.com/mdn/browser-compat-data をチェックアウトしてプルリクエストを送信してください。

Update compatibility data on GitHub

Chrome Edge Firefox Internet Explorer Opera Safari Android webview Android 版 Chrome Android 版 Firefox Android 版 Opera iOSのSafari Samsung Internet Node.js
Chrome 完全対応 1 Edge 完全対応 12 Firefox 完全対応 1 IE 完全対応 3 Opera 完全対応 3 Safari 完全対応 1 WebView Android 完全対応 1 Chrome Android 完全対応 18 Firefox Android 完全対応 4 Opera Android 完全対応 10.1 Safari iOS 完全対応 1 Samsung Internet Android 完全対応 1.0 nodejs 完全対応 0.1.100
Parses leading-zero strings are decimal, not octal Chrome 完全対応 23 Edge 完全対応 12 Firefox 完全対応 21 IE 完全対応 9 Opera 完全対応 15 Safari 完全対応 6 WebView Android 完全対応 4.4 Chrome Android 完全対応 25 Firefox Android 完全対応 21 Opera Android 完全対応 14 Safari iOS 完全対応 6 Samsung Internet Android 完全対応 1.5 nodejs 完全対応 0.10

Особенность деления на 0 в js

Как известно из уроков по математике, делить на нуль нельзя. Это правило взяли за основу большинство создателей языков программирования. Поэтому при делении на нуль все программы выдают ошибку.

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

Почему же так? Как известно из тех же математических наук, чем меньше делитель, тем в результате получается большее число. Именно поэтому создатели данного прототипно-ориентированного языка решили отказаться от шаблонов и пойти своим путем.

Для тех, кто впервые сталкивается со значением Infinity, ниже я объяснил его особенности.

Может быть отрицательной. Также сохраняются все стандартные правила работы с арифметическими операторами.

На этом, пожалуй, и закончу. Если вам понравилась публикация, то обязательно подписывайтесь на мой блог. Не жадничайте ссылкой на интересные статьи и делитесь ими с друзьями. Пока-пока!


С этим читают