Onde as mentes criativas se encontram!


 
Cambalinho
Membro
Membro
Autor
Mensagens: 49
Registrado em: Qui Jul 20, 2017 9:59 am

como converter 1 numero decimal em inteiro?

Ter Nov 07, 2017 5:00 pm

imaginem este numero:
0.200
como posso sacar o '200'?
Editado pela última vez por Cambalinho em Sex Nov 10, 2017 2:38 pm, em um total de 1 vez.
 
Avatar do usuário
garooc
Membro
Membro
Mensagens: 24
Registrado em: Sex Out 14, 2016 8:51 pm

Re: como converter 1 numero decimal em inteiro?

Ter Nov 07, 2017 8:07 pm

A função floor do game maker  resolve isso, veja o próprio exemplo do game maker:

val = floor( 3.9 ); 

a variável val terá o valor 3.
 
Cambalinho
Membro
Membro
Autor
Mensagens: 49
Registrado em: Qui Jul 20, 2017 9:59 am

Re: como converter 1 numero decimal em inteiro?

Sex Nov 10, 2017 2:37 pm

nem entendi porque não fui notificado :(
esse exemplo da-me o numero inteiro, mas não o decimal :(
sobre o seu exemplo, eu preciso do '9'
 
Avatar do usuário
junior.rod2
Moderador
Moderador
Mensagens: 84
Registrado em: Sáb Ago 22, 2015 6:04 pm

Re: como converter 1 numero decimal em inteiro?

Sex Nov 17, 2017 3:59 pm

Pelo que entendi, você precisa de algo que retorne a parte decimal e não arredonde o valor, correto?
Nesse caso use a função frac.
Por exemplo:
frac(7.389)

O Código acima ira retornar 389.
 
Cambalinho
Membro
Membro
Autor
Mensagens: 49
Registrado em: Qui Jul 20, 2017 9:59 am

Re: como converter 1 numero decimal em inteiro?

Sex Nov 17, 2017 4:29 pm

eu testei no GMS 1.4.x:
show_message(string(frac(7.389)));

e a caixa de mensagem da-me "0.39" :(
 
Avatar do usuário
junior.rod2
Moderador
Moderador
Mensagens: 84
Registrado em: Sáb Ago 22, 2015 6:04 pm

Re: como converter 1 numero decimal em inteiro?

Sex Nov 17, 2017 5:46 pm

Tinha me esquecido desse detalhe, a função frac não vai remover o 0 antes da virgula. 
Então, tente dessa forma, substitua "Valor" pelo numero ou variável a ser convertido.
real(string_copy((string_format(Valor,3,3)),string_pos(".",string_format(Valor,3,3))+1,string_length(string_format(Valor,3,3))))

Lembrando que o código possui precisão de 3 casas apos a virgula (isso pode ser alterado).
 
Cambalinho
Membro
Membro
Autor
Mensagens: 49
Registrado em: Qui Jul 20, 2017 9:59 am

Re: como converter 1 numero decimal em inteiro?

Sex Nov 17, 2017 6:04 pm

perfeito. agora te pergunto: como posso saber quantas casas decimais tem?
 
Avatar do usuário
junior.rod2
Moderador
Moderador
Mensagens: 84
Registrado em: Sáb Ago 22, 2015 6:04 pm

Re: como converter 1 numero decimal em inteiro?

Sáb Nov 18, 2017 2:04 am

Bom, fiz umas melhorias naquele código, agora retorna qualquer numero depois da virgula desde que não ultrapasse 10 casas decimais e não esteja depois de 3 zeros (exemplo: 0.4009 nesse caso o 9 seria desconsiderado).
Basta colocar esse código em um script:
Valor=frac(argument0)
str_fmt=string_format(Valor,1,10)
return real(string_copy((str_fmt),string_pos(".",str_fmt)+1,string_pos("000",str_fmt)-3));

E quando precisar converter algum valor, use o script que você criou, dessa forma:
Nome_do_script(Valor_a_converter)

Testei com vários valores e esta com uma precisão muito boa, a menos que você vá utilizar cálculos muito precisos, isso deve lhe servir. 
 
Cambalinho
Membro
Membro
Autor
Mensagens: 49
Registrado em: Qui Jul 20, 2017 9:59 am

Re: como converter 1 numero decimal em inteiro?

Sáb Nov 18, 2017 4:38 pm

muito obrigado por tudo

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes