Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vitor López

Falha no "parseInt"

Recommended Posts

Boa Tarde a todos,

 

Bem... Vou explicar meu problema com um código.:

 

<script type="text/javascript">	teste1 = '01';	teste2 = '02';	teste8 = '08';	teste9 = '09';		alert(parseInt(teste1));	alert(parseInt(teste2));	alert(parseInt(teste8));	alert(parseInt(teste9));</script>

Pois bem... Percebam que entre aspas, os números retornados pelo parseInt de teste1 e teste2 são, respectivamente, 1 e 2. Mas algo estranho acontece no teste8 e teste9. Os valores retornados por este teste são 0 e 0.

 

Claro que há outras maneiras de se fazer isso, e até inclusive já resolvi isso usando o método Number() ao invés de parseInt. Eu também poderia simplesmente ter colocado sem as aspas, mas no exemplo original esses números(01,02,08,09) são resultantes de uma data splitada, que retorna os valores como string.

 

Mas fica ai a critério de curiosidade porque isso acontece. Se alguém souber porque isso acontece por favor responda a este topico.

 

Meu objetivo é só entender a lógica e não conseguir outra solução, pois eu já resolvi.

 

Valeu pessoal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, Vitor.

 

Isso está acontecendo porque o browser entende que números com um zero à esquerda estão representados na base octal. O fato de ele retornar zero para "08" ou "09" é porque esses números simplesmente não existem na base octal (é a mesma coisa que você tentar escrever um número binário utilizando algarismos diferentes de 0 ou 1).

 

Mas notei esse comportamento somente no IE e no FF, não no Opera. Portanto, uma forma "crossbrowser" de se utilizar o parseInt seria passando o parâmetro opcional, que é a base do número:

 

alert(parseInt("08", 10));

 

[]'s!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.