Converter texto (string) para número em JavaScript e suas diferenças
- #JavaScript
- #Node.js
Pode parecer até trivial esse tipo de procedimento, mas para quem estar iniciando é bom saber as formas e suas particularidades de realizar uma conversão, evitando assim problemas futuros nos resultados esperados.
Number()
Essa é uma função global de conversão para números.
// Using the Number() function to convert a string to a number
var str1 = "42";
var num1 = Number(str1); // num1 será 42
Importante ressaltar que ela converte apenas strings que contenham valores numéricos, caso a string contenha valores não numéricos, a função retornará NaN (not a number).
Por exemplo:
var str2 = "hello";
var num2 = Number(str2); // num2 será NaN
Outro detalhe importante é que valores booleanos e vazios serão convertidos também.
var str3 = "";
var num3 = Number(str3);
// Valor retornado: 0
Operador unário de adição (+)
A forma mais simples, que conheço, para converter uma string em um inteiro é adicionando o operador unário de adição (+) antes da string (ou variável contendo a string).
console.log(+'2');
// Valor retornado: 2
const myNumber = '2';
console.log(+myNumber);
// Valor retornado: 2
O operador de subtração também consegue realizar casting
Mas atenção!
O operador unário
parseInt() e parseFloat()
O parserInt()
é a forma mais comumente usada, recebendo uma string e retornando um inteiro, e o parserFloat()
recendo uma string e retornando um número de ponto flutuante.
// Usando parseInt(string, base) para converter uma string para um integer
var str5 = "42";
var num5 = parseInt(str5, 10); // num5 será 42
// Usando parseFloat(string) para converter uma string para um número de ponto flutuante
var str6 = "3.14159";
var num6 = parseFloat(str6); // num6 será 3.14159
Como viram, no parseInt(string, base)
pode ser fornecido a base de conversão, um inteiro entre 2 e 36. Passei 10, pois queria a base decimal, o que não é obrigatório uma vez que a base 10 é assumida quando não se especifica, mas é sempre recomendado passar a base para ser o mais explícito possível sobre o que está ocorrendo.
Dependendo da sua necessidade, essa forma de conversão tem uma certa diferença: ao passar uma string vazia e valores booleanos o retorno será NaN. Se tiver dúvidas em qual usar, essa é a melhor escolha para você.
Também é possível converter strings que comecem com números e tenham caracteres na sequência, por exemplo:
parseInt('1984book'); // o retorno será 1984
Postado originalmente no dev.to, segue lá!