Arquivado em: AS 2.0, AS 3.0, Flash geral | Tags: as2, as3, BUG, Decimal, Number, Octal
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
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
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
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>