Javascript – Pegadinha no parseInt()

Postado por: Luiz Paulo em

Já estamos cansados de saber que javascript é totalmente dinâmico e podemos mudar facilmente o tipo das variáveis.

Uma das facilidades em javascript é a conversão de variáveis em inteiro, com a função parseInt(). Só que essa função tem uma pegadinha que pode atrapalhar bastante aos desatentos.

Sua sintaxe é bem simples como segue:

var number = "123456348965";
var integerNumber = parseInt(number);
alert(integerNumber); //123456348965


Nesse caso, tranquilo! Nenhum problema. Mas se, por exemplo, quisermos converter uma string “010″ teremos problemas. Vejam o exemplo:

var number = "010";
var integerNumber = parseInt(number);
alert(integerNumber); //8

Isso acontece pois o número é automaticamente detectado como Octal. Para resolver esse problema, a função parseInt pode receber 2 parâmetros.

parseInt(string, radix)

Onde:
string = String a ser transformada
radix = Numeral que você quer se basear (de 2 a 36)

Veja então como fica a solução para este problema:

var number = "010";
var integerNumber = parseInt(number, 10); //10 = base decimal
alert(integerNumber); //10

Pegadinha desvendada e problema resolvido!

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Sobre Luiz Paulo

Luiz Paulo dos Prazeres é desenvolvedor web desde 2000. Atualmente trabalha na Automatos junto à equipe de site desenvolvendo projetos web2.0 e utilizando como server-side a linguagem java.

7 Responses to “Javascript – Pegadinha no parseInt()”

  1. Fabio

    Bom post Luizão .. vlw.

  2. Ótimo post! Não sabia dessa!

  3. Putz, esta para mim é novidade, sacanagem a função assumir 2 bases numéricas por causa de um zero a esquerda

  4. Estava lendo isso quase agora num manual

  5. Caramba! São 9 anos que eu trabalho com JavaScript e não sabia dessa pegadinha!
    Muito obrigado por nos informar!

  6. Sandro Alves Peres

    Nossa cara, não sabia dessa não … Valeu, muito bom!!!

  7. Cassiano

    Pow, valeu cara!! Tava tendo esse problema e o sistema dava um resolvendo maluco… Primeiro link que entrei foi o seu e resolveu meu problema.

    Abraços

Leave a Reply