Article image
Ruan Sousa
Ruan Sousa13/03/2023 13:12
Compartilhe

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á!

Imagem de Freepik.
Compartilhe
Comentários (0)