Página 1 de 1

como converter 1 numero decimal em inteiro?

Enviado: Ter Nov 07, 2017 5:00 pm
por Cambalinho
imaginem este numero:
0.200
como posso sacar o '200'?

Re: como converter 1 numero decimal em inteiro?

Enviado: Ter Nov 07, 2017 8:07 pm
por garooc
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.

Re: como converter 1 numero decimal em inteiro?

Enviado: Sex Nov 10, 2017 2:37 pm
por Cambalinho
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'

Re: como converter 1 numero decimal em inteiro?

Enviado: Sex Nov 17, 2017 3:59 pm
por junior.rod2
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.

Re: como converter 1 numero decimal em inteiro?

Enviado: Sex Nov 17, 2017 4:29 pm
por Cambalinho
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" :(

Re: como converter 1 numero decimal em inteiro?

Enviado: Sex Nov 17, 2017 5:46 pm
por junior.rod2
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).

Re: como converter 1 numero decimal em inteiro?

Enviado: Sex Nov 17, 2017 6:04 pm
por Cambalinho
perfeito. agora te pergunto: como posso saber quantas casas decimais tem?

Re: como converter 1 numero decimal em inteiro?

Enviado: Sáb Nov 18, 2017 2:04 am
por junior.rod2
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. 

Re: como converter 1 numero decimal em inteiro?

Enviado: Sáb Nov 18, 2017 4:38 pm
por Cambalinho
muito obrigado por tudo