Javascript – Pegadinha no parseInt()

by Luiz Paulo | junho 13, 2009 | 2 Comments »

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.
Veja 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!
:)

Categorias: Desenvolvimento web, JavaScript, Linguagens
Tags: , , ,

2 Comentários

  1. avatar Rodrigo Cacilhas junho 14th, 2009 at 19:59

    Essa é muito boa… mas não é pegadinha.

    Em Computação convensionou-se (se eu pegar quem foi, dou-lhe uma surra!) que números começados por zero (0) estão na representação octal. :-P

    Assim como números começados por 0x estão na representação hexadecimal.

    Assim, 010 seria 8, 10 seria 10 mesmo e 0x10 seria 16.

    Sabe o famigerado 0644 das permissões de sistemas de arquivo GNU/Linux? Pois é… não tem a ver com o número 644, mas com o número 420. A representação octal aqui é simplesmente conveniente, pois cada grupo de permissões tem três bits (2³=8).

    []'s
    Cacilhas, La Batalema

  2. avatar Isto é um bug no Javascript? » Luiz Paulo - tecnologia web agosto 17th, 2009 at 18:02

    [...] post fala sobre algumas falhas do Javascript. Umas delas eu já havia comentado aqui no blog Javascript – Pegadinha no parseInt(), mas ele foi bem mais a fundo nas pegadinhas, [...]

Deixe um comentário


 

Sobre

Foto Luiz Paulo

Sou desenvolvedor web desde 2000, atuei em grandes projetos web2.0. Atualmente trabalho na Automatos junto equipe de site desenvolvendo projetos web2.0 e utilizando como server-side a linguagem java.

Para saber mais sobre mim, acesse Meus Links ›


Valid XHTML 1.0 Strict Valid CSS!

Luiz Paulo | tecnologia web