DEV Community

Ruan Aragão
Ruan Aragão

Posted on

Converter texto (string) para número em JavaScript e suas diferenças

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Outro detalhe importante é que valores booleanos e vazios serão convertidos também.

var str3 = "";
var num3 = Number(str3);
// Valor retornado: 0
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Top comments (0)