ParseInt em Javascript

Pouco depois de aprender arredondamento de números com o PHP eu estava desenvolvendo um código em javascript que recebia algumas informações numéricas e precisava arredondar o número que vinha, a fim de comparar com outro número inteiro.

Usando o parseInt eu percebi umas "reações estranhas" quando eu passava uma string que tivesse zero a esquerda, por exemplo "0x" não retornava X como int, retornava um número estranho.

Fui pesquisar sobre o assunto e abaixo explico o motivo desse retorno estranho…

parseInt

Na documentação do javascript a sintaxe da função é a seguinte:

parseInt(string, radix)

O parâmetro "string" é obrigatório é a string que será convertida para int, o parâmetro radix é opcional – aí começa o problema. Quando este parâmetro não é passado o script vai deduzir qual é o tipo da string passada e transformará ela em int.

Quando o número a ser convertido começa com 0 o script utiliza a conversão para octal, e não decimal. O radix que deve ser passado quando quiser forçar o uso do sistema octal é 8.

Quando o número a ser convertido começa com 0x (exemplo: 0xF) é utilizado o sistema hexadecimal para a conversão. O radix que deve ser passado quando você quiser forçar o uso do sistema hexadecimal é 16.

Nos casos restantes a conversão será feita utilizando o sistema decimal, para forçar o uso do sistema decimal o radix a ser passado é 10.

 

Solução

Se você quer converter o número para int utilizando o sistema decimal sempre passe o segundo parâmetro (radix) como 10, esta é uma boa prática que poderá fazer você economizar tempo tentando descobri porque em alguns casos específicos os cálculos do seu script não saem como o esperado…

Dúvidas e sugestões nos comentários! 🙂

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *