JavaScript: преобразование строки в число? - PullRequest
5 голосов
/ 16 мая 2010

Есть ли способ преобразовать переменную из строки в число?

Например, у меня есть

var str = "1";

Могу ли я изменить его на

var str = 1;

Ответы [ 4 ]

12 голосов
/ 16 мая 2010

Попробуйте str = parseInt( str, 10 )

( note : второй параметр обозначает основание для разбора; в этом случае ваше число будет проанализировано как десятичное число)

Однако, как говорится, термин «тип» используется в JavaScript довольно свободно. Не могли бы вы объяснить, почему вас вообще касается тип переменной?

8 голосов
/ 16 мая 2010

Есть три способа сделать это:

str = parseInt(str, 10); // 10 as the radix sets parseInt to expect decimals

или

str = Number(str); // this does not support octals

или

str = +str; // the + operator causes the parser to convert using Number

Выбирай с умом:)

3 голосов
/ 20 мая 2017

Лучший способ:

var str = "1";
var num = +str; //simple enough and work with both int and float

Вы также можете:

var str = "1";
var num = Number(str); //without new. work with both int and float

или

var str = "1";
var num = parseInt(str,10); //for integer number
var num = parseFloat(str); //for float number

DO NOT:

var str = "1";
var num = new Number(str);  //num will be an object. typeof num == 'object'

Использовать parseInt только для особых случаев, например

var str = "ff";
var num = parseInt(str,16); //255

var str = "0xff";
var num = parseInt(str); //255
2 голосов
/ 03 июля 2018

У вас есть несколько вариантов:

  • Унарный оператор +: value = +value приведет строку к числу, используя для этого стандартные правила движка JavaScript. Число может иметь дробную часть (например, +"1.50" равно 1.5). Любые не цифры в строке (кроме e для научной записи) дают результат NaN. Кроме того, +"" - это 0, что может быть не интуитивно понятно.

    var num = +str;
    
  • Функция Number: value = Number(value). Делает то же самое, что и +.

    var num = Number(str);
    
  • Функция parseInt, обычно с основанием (основание числа): value = parseInt(value, 10). Недостатком здесь является то, что parseInt преобразует любое число, которое он находит в начале строки, но игнорирует недицифы позже в строке, поэтому parseInt("100asdf", 10) равно 100, а не NaN. Как следует из названия, parseInt разбирает только целое число.

    var num = parseInt(str, 10);
    
  • Функция parseFloat: value = parseFloat(value). Допускает дробные значения и всегда работает в десятичном формате (никогда не восьмеричный или шестнадцатеричный). То же самое делает parseInt с мусором в конце строки, parseFloat("123.34alksdjf") равен 123.34.

    var num = parseFloat(str);
    

Итак, выберите ваш инструмент в соответствии с вашим вариантом использования. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...