Sobes.tech
Junior

Como converter uma string em número em JavaScript?

sobes.tech IA

Resposta da IA

Em JavaScript, a conversão de strings em números pode ser feita de várias maneiras:

  • Conversões implícitas de tipos:

    • Operadores matemáticos: por exemplo, o sinal mais unário + ou subtração -.
    // Conversão implícita com o sinal mais unário
    let str = "123";
    let num = +str; // num = 123 (número)
    
    • Operações aritméticas: ao usar operadores aritméticos, o JavaScript tentará converter os operandos em números.
    // Conversão implícita com subtração
    let str1 = "10";
    let str2 = "5";
    let result = str1 - str2; // result = 5 (número)
    
  • Conversões explícitas de tipos:

    • parseInt(string, radix): Converte uma string em um inteiro. Recomenda-se especificar o segundo argumento radix (base do sistema numérico) para evitar comportamentos inesperados.
    // Conversão explícita com parseInt
    let strInt = "42px";
    let numInt = parseInt(strInt, 10); // numInt = 42 (inteiro)
    
    let strBinary = "101";
    let numBinary = parseInt(strBinary, 2); // numBinary = 5 (inteiro)
    
    • parseFloat(string): Converte uma string em um número de ponto flutuante. Analisa a string até o primeiro caractere não numérico ou ponto.
    // Conversão explícita com parseFloat
    let strFloat = "3.14abc";
    let numFloat = parseFloat(strFloat); // numFloat = 3.14 (número de ponto flutuante)
    
    • Number(value): Converte qualquer valor em um número. É uma abordagem mais estrita em comparação com parseInt e parseFloat. Se a string não puder ser completamente convertida em um número, retorna NaN.
    // Conversão explícita com Number
    let strNum = "123.45";
    let numFromNumber = Number(strNum); // numFromNumber = 123.45 (número)
    
    let strInvalid = "hello";
    let numInvalid = Number(strInvalid); // numInvalid = NaN
    

Diferenças e características:

Método Descrição Retorna NaN com string inválida Analisa do início até o primeiro não número
+string Conversão implícita com o sinal mais unário. NaN Não (toda a string)
string - 0 Conversão implícita com subtração. NaN Não (toda a string)
parseInt() Analisa um inteiro. NaN Sim
parseFloat() Analisa um número de ponto flutuante. NaN Sim
Number() Conversão explícita. Mais estrita. NaN Não (toda a string)

A escolha do método depende da tarefa específica e do formato esperado da string de entrada. Number() é preferido para converter strings que representam números inteiros ou decimais sem caracteres adicionais. parseInt() e parseFloat() são úteis para extrair valores numéricos de strings que contêm símbolos adicionais (por exemplo, unidades de medida). A conversão implícita deve ser usada com cautela, compreendendo seu comportamento.