Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

como converter 1 numero decimal em inteiro?

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

como converter 1 numero decimal em inteiro?

Mensagem por Cambalinho » 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
Reações: 0
Mensagens: 25

Re: como converter 1 numero decimal em inteiro?

Mensagem por garooc » 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.

Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

Re: como converter 1 numero decimal em inteiro?

Mensagem por Cambalinho » 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
Reações: 0
Mensagens: 101

Re: como converter 1 numero decimal em inteiro?

Mensagem por junior.rod2 » 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.

Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

Re: como converter 1 numero decimal em inteiro?

Mensagem por Cambalinho » Sex Nov 17, 2017 4:29 pm

eu testei no GMS 1.4.x:

Código: Selecionar todos

show_message(string(frac(7.389)));
e a caixa de mensagem da-me "0.39" :(

Avatar do usuário
junior.rod2
Moderador
Moderador
Reações: 0
Mensagens: 101

Re: como converter 1 numero decimal em inteiro?

Mensagem por junior.rod2 » 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.

Código: Selecionar todos

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).

Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

Re: como converter 1 numero decimal em inteiro?

Mensagem por Cambalinho » 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
Reações: 0
Mensagens: 101

Re: como converter 1 numero decimal em inteiro?

Mensagem por junior.rod2 » 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:

Código: Selecionar todos

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. 

Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

Re: como converter 1 numero decimal em inteiro?

Mensagem por Cambalinho » Sáb Nov 18, 2017 4:38 pm

muito obrigado por tudo

Responder

Quem está online

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