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:
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:
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:
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