Quando preciso converter textos para número, qual é a melhor opção e qual a diferença entre elas?
Quando preciso converter textos para número, qual é a melhor opção e qual a diferença entre elas?
Oii, Pedro.
A diferença entre parseInt() e Number() no JavaScript tá no modo como cada um converte strings em números e no tipo de valor que aceitam ou retornam.
1. parseInt():
Função: converte uma string em um inteiro.
Modo de funcionamento: lê a string da esquerda para a direita e para no primeiro caractere que não pode fazer parte de um número inteiro.
Sintaxe:
parseInt(string, base);
O segundo parâmetro (base) indica o sistema numérico (por exemplo, 10 para decimal, 16 para hexadecimal).
Exemplos:
parseInt("42"); // 42
parseInt("42.9"); // 42 > ignora o decimal
parseInt("42abc"); // 42 > para quando encontra letra
parseInt("abc42"); // NaN > não começa com número
parseInt("101", 2); // 5 > interpreta como binário
Resumo:
2. Number():
NaN.Exemplos:
Number("42"); // 42
Number("42.9"); // 42.9
Number("42abc"); // NaN → string inválida
Number(" 42 "); // 42 → ignora espaços
Number(true); // 1
Number(false); // 0
Number(null); // 0
Number(undefined); // NaN
Resumo:
3. Quando usar cada um
parseInt() quando quiser extrair um número inteiro de uma string que pode conter outros caracteres (como "50px").Number() quando quiser converter valores que devem ser totalmente numéricos e talvez incluam decimais.Resumo comparativo:
| Função | Tipo de retorno | Lê parcial? | Aceita decimais? | Exemplo útil |
|---|---|---|---|---|
parseInt() | Inteiro | Sim | Não | "120px" > 120 |
Number() | Inteiro/Decimal | Não | Sim | "3.14" > 3.14 |
Em resumo:
parseInt() é mais tolerante, mas só dá inteiros.Number() é mais preciso e estrito, mas aceita decimais e outros tipos.