Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu gostaria de saber como eu faço transformação de base em ActionScript 3.0, pois estou fazendo uma calculadora e quero fazer um botão que transforme de base decimal para base X ou de base X para base decimal.
Ou seja:
Número de Base 10 --> Base Desejada (base X) --> Resultado (Em base X)
Número de Base X --> Base do Número --> Resultado (Em base 10)
Exemplos:
Base 10 --> Base X:
4 --> 2 --> 100
9 --> 8 --> 11
15 --> 16 --> F
Base X --> Base 10:
F --> 16 --> 15
11 --> 8 --> 9
100 --> 2 --> 4
Uma função seria o oposto da outra. Eu sei que isso é meio complicado, mas eu estou muito ansioso para terminar minha calculadora e essa é a única função que falta nela.
Obrigado :)
>
Vai funcionar com qualquer base até o fim do alfabeto ou só com as usadas como binário, octal,decimal e hexadecimal?
Fica mais fácil trabalhar com bases que são potência de dois para fazer conversão direta entre elas.
Ou então você pode converter para decimal e para outra base.
De qualquer forma fiz uma função que converte um número em base decimal, incluindo decimal com fração, para qualquer outra base de 2 a 16.
E uma função que converte numeros para letras(NtL).
Veja:
Conversão de outra base é bem fácil.
Precisaria de outra função para converter letra para número.
Ex: F >> 15
E o resultado seria o somatrório de cada um desses números pela base elevada à posição.
Qualquer coisa diz ae.
Obrigado!!!
Só estou com uma dúvida na hora de fazer a outra função, como eu faço para detectar a posição de cada dígito?
>
Obrigado!!!
Só estou com uma dúvida na hora de fazer a outra função, como eu faço para detectar a posição de cada dígito?
Eu tentei por o código na calculadora mas fica dando esse erro:
>
Error: Error #1502: Um script foi executado por mais tempo que o período limite padrão de 15 segundos.
at Calculadora_fla::MainTimeline/NtL()
at Calculadora_fla::MainTimeline/BDX()
at Calculadora_fla::MainTimeline/mostrar()
Eu percebi que tinha uma variável chamada i mas eu já estava usando uma variável chamada i, então eu substituí por p. Mas mesmo assim continua dando esse erro.
Quando eu uso a função trace funciona mas quando eu tento transferir o resultado para o visor da calculadora dá erro.
E além disso por que eu não posso editar o meu post?
A função BDX retorna string, o visor recebe número ou string?
Veja se no debug mostra a linha desse erro.
É um switch bem simples, esse erro as vezes da em for infinito.
Veja se trocando n na função NtL por outra coisa funciona.
>
A função BDX retorna string, o visor recebe número ou string?
Veja se no debug mostra a linha desse erro.
É um switch bem simples, esse erro as vezes da em for infinito.
Veja se trocando n na função NtL por outra coisa funciona.
O visor recebe String.
Eu tentei trocar o n por outra coisa mas continua dando erro...
Cálculo usa Number, campo de texto recebe String.
Exemplo:
function qualquerCoisa(valor:int):String {
if(valor < 999) {
//...
} else {
return valor.toString();
}
}>
Cálculo usa Number, campo de texto recebe String.
Exemplo:
function qualquerCoisa(valor:int):String {
if(valor < 999) {
//...
} else {
return valor.toString();
}
}
Eu já tentei converter o valor para String e mesmo assim dá erro.
for (p=0; p <= limite; p++)
{
q = q * base;
pINT = Math.floor(q);
nfsf = nfsf + NtL(pINT);
q -= pINT;
if (q==0)
{
p = limite;
}
}
O debug parou na linha 105 (na última linha desse código citado)
O erro foi na linha 105 ou na função NtL?
O debug parou na linha 105 (na última linha desse código citado)at Calculadora_fla::MainTimeline/NtL() at Calculadora_fla::MainTimeline/BDX() at Calculadora_fla::MainTimeline/mostrar()
Error: Error #1502: Um script foi executado por mais tempo que o período limite padrão de 15 segundos.
Tem como dar um trace na função BDX para dar uma olhada nos parâmetros base e numero?
trace('b:'+base+'n:'+numero)
A variavel limite continua ainda com valor 10?
A variavel limite é importante para limitar o for.
No caso de uma dizima periódica o número não acabaria. Se o número não acabar o for vai ser infinito.
For infinito da esse erro pois como o for nunca vai acabar o script nunca vai terminar de ser execultado.
For infinito é a principal causa desse erro.
Tem como colocar um trace qualquer dentro do for para verificar quantas vezes é repetido o script antes de dar erro?
OBS:
Eu havia respondido ontem, mas não enviou e fiquei sabendo agora que não.
O erro vem quando eu tento transferir o resultado para o visor, eu copiei o mesmo código em outra aplicação e deu tudo certo.
Vai funcionar com qualquer base até o fim do alfabeto ou só com as usadas como binário, octal,decimal e hexadecimal?
Fica mais fácil trabalhar com bases que são potência de dois para fazer conversão direta entre elas.
Ou então você pode converter para decimal e para outra base.
De qualquer forma fiz uma função que converte um número em base decimal, incluindo decimal com fração, para qualquer outra base de 2 a 16.
E uma função que converte numeros para letras(NtL).
Veja:
Conversão de outra base é bem fácil.
Precisaria de outra função para converter letra para número.
Ex: F >> 15
E o resultado seria o somatrório de cada um desses números pela base elevada à posição.
Qualquer coisa diz ae.