Conversões de Dados - JavaScript

Frequentemente surge a necessidade de converter um tipo de dado em outro. Algumas conversões em JavaScript são realizadas automaticamente. Por exemplo:

const number1 = "56";
const number2 = 4;
const result = number1 + number2;
console.log(result); // 564

Aqui, a constante number1 é uma string, mais precisamente uma representação em string de um número. A constante number2 é um número. E, no final, obtemos não o número 60, mas a string "564".

Quando ocorre a adição, as conversões em JavaScript são feitas seguindo o princípio:

  • Se ambos os operandos são números, ocorre a adição aritmética normal.

  • Se a condição anterior não é atendida, ambos os operandos são convertidos em strings e ocorre a concatenação.

Consequentemente, no exemplo acima, uma vez que o primeiro operando é uma string, o segundo operando - um número - também é convertido em string, resultando na string "564", e não no número 60. De fato, o que ocorre é:

const number1 = "56";
const number2 = 4;
const result = number1 + String(number2);
console.log(result); // 564

A expressão String(number2) permite obter a representação em string da constante number2, ou seja, transforma o número 4 na string "4".

No entanto, o comportamento padrão nem sempre pode ser desejável. Por exemplo, no caso mencionado, podemos querer que os valores se somem como números, não como strings. Nesse caso, podemos usar funções de conversão.

parseInt()

Para converter uma string em um número inteiro, usa-se a função parseInt().

const number1 = "56";
const number2 = 4;
const result = parseInt(number1) + number2;
console.log(result); // 60

Além disso, a string pode ter conteúdo misturado, por exemplo, "123hello", onde há números, mas também caracteres comuns. A função parseInt() ainda tentará realizar a conversão - ela lê os dígitos sequencialmente a partir do primeiro caractere até encontrar o primeiro caractere não numérico:

const num1 = "123hello";
const num2 = parseInt(num1);
console.log(num2); // 123

É importante considerar que o valor sendo convertido em número é sempre convertido em string primeiro. Isso pode levar a resultados inesperados à primeira vista:

const number1 = parseInt(0.000005);   // 0;
console.log(number1);

const number2 = parseInt(0.0000005);  // 5
console.log(number2);

Nos casos acima, números fracionários são passados para a função parseInt() e esperamos obter o número 0 em ambos os casos. No entanto, ao converter number2, obtemos o número 5.

Para números fracionários menores que 10-6 (0.000001), a notação exponencial é aplicada, ou seja, o número 0.0000005 é representado como 5e-7:

O mesmo se aplica a números muito grandes, como 999999999999999999999, que também são representados em forma exponencial.

NaN e isNaN

Se a função parseInt() não conseguir realizar a conversão, ela retorna o valor NaN (Not a Number), que indica que a string não representa um número e não pode ser convertida.

console.log(parseInt("abc"));   // NaN
const type = typeof NaN;
console.log(type);              // number

Curiosamente, o próprio valor NaN (não número) é considerado do tipo number, ou seja, um número.

Por meio da função especial isNaN(), é possível verificar se uma string representa um número. Se a string não for um número, a função retorna true; se for um número, retorna false:

const num1 = "javascript";
const num2 = "22";
let result = isNaN(num1);
console.log(result); // true - num1 não é um número

result = isNaN(num2);
console.log(result); // false - num2 é um número

parseFloat

Para converter strings em números fracionários, utiliza-se a função parseFloat() que funciona de maneira semelhante:

const number1 = "46.07";
const number2 = "4.98";
let result = parseFloat(number1) + parseFloat(number2);
console.log(result); // 51.05

Conversão de String para Número e o Operador +

É importante notar que, para converter uma string em número em JavaScript, podemos usar o operador unário + antes do valor a ser convertido:

const number1 = "56";
const number2 = 4;
const result = +number1 - number2; 
console.log(result); // 52

Aqui, a expressão +number1 converte a string "56" em número 56.

Se precisarmos obter uma representação negativa do número, de maneira semelhante, usamos o sinal unário de menos (como diante de números negativos):

const number1 = "56";
const number2 = 4;
const result = -number1 - number2;  // -56 - 4 = -60
console.log(result); // -60

No entanto, nos exemplos acima, a string number1 poderia ser convertida em números. Se isso não for possível, o resultado da conversão será NaN:

const number1 = "56hek";
console.log(+number1); // NaN
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com