ALK Armando Leopoldo Keller


BUG com numeros no AS2 que foi ‘corrigido’ no AS3
20 Agosto, 2008, 11:31 pm
Arquivado em: AS 2.0, AS 3.0, Flash geral | Tags: , , , , ,

Não sei se alguem percebeu, mas no AS2 tinha um ‘erro’ se é que da para chamar assim, pois na documentação possui um exemplo.
Quando tem algum numero com 0 na frente ele convertia para octal. Agora no AS3 ele converte certo para decimal. É bom avisar, vai que alguem ta acostumado com o octal.
Exemplos e comparaçoes
Conversão da base:

// Execute isso:
trace(00000001)
trace(00000010)
trace(00000100)
trace(00001000)
trace(00010000)
trace(00100000)
trace(01000000)
trace("--------")
trace(Number("00000001"))
trace(Number("00000010"))
trace(Number("00000100"))
trace(Number("00001000"))
trace(Number("00010000"))
trace(Number("00100000"))
trace(Number("01000000"))
/*
Resultado em AS2:
1
8
64
512
4096
32768
262144
--------
1
8
64
512
4096
32768
262144

Em AS3:
1
10
100
1000
10000
100000
1000000
——–
1
10
100
1000
10000
100000
1000000
*/

Outro Exemplo, desta vez com erro:

// Executa
trace(08);
/*
Resposta em AS2: Erro de sintaxe
Resposta em AS3: 8
*/

Isso pode parecer não ser nada, mas em alguma aplicação que trabalha com numeros formatados com umas 10 casas, e tudo tem 0 antes do valor real, isso altera o valor de tudo :P

EDITADO :

Pelo que eu vi isso está documentado, mas não muito bem, ta dentro de um outro artigo no help do flash, apenas como um exemplo.

mas do numero em si com 0 antes ser octal tudo bem, mas o Number(”numero em string”) deveria retornar decimal :P ainda mais que normalmente a entrada de dados depende do usuario (uma coisa a mais para filtrar).


Sem comentários ainda até o momento
Deixe um comentário



Deixe um comentário
Linhas e parágrafos quebram automaticamente, endereços de email não serão mostrados, HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>