Transformar string em real

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Transformar string em real

Mensagem por Black Studio em Ter 01 Maio 2012, 15:22

Fala ai moçada, então, eu estou tentado transformar um numero maior em decimal, como por exemplo :
Código:
542 vira 0.542
Mas o problema, é que não está dando certo, eu já tentei desse jeito : 0.+valor
Desse jeito '0.'+valor
Desse jeito string(0.)+valor

Lembrando que o valor, é definido por várias variáveis junto a scripts, veja :
Código:
scr_concatena(scr_arruma_tempo(global.minuto,false),scr_arruma_tempo(global.segundo,false),scr_arruma_tempo(global.milesimo,true))
Bem, o script concatena foi o que o Pedro me passou para Juntar os valores, e o Arruma tempo, serve para deixar os "0", por exemplo 8 vira 08, serve mais para o Draw.
O Problema é que eu não to conseguindo, eu não sei se é Bug do GM, ou Bug do Thiago.

Até! albino


Última edição por Funkbuster em Qui 03 Maio 2012, 11:06, editado 3 vez(es)

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Transformar string em real

Mensagem por PedroX em Ter 01 Maio 2012, 15:53

Tente '0.' + string(valor).

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Transformar string em real

Mensagem por Black Studio em Ter 01 Maio 2012, 16:04

Deu certo pela metade Pedro, Tipo no tempo 00:09:654, ele virou 0,9654
Desse jeito 10 segundo seria menor que 2...

Edit : Talvez se eu adicionar os 0 conforme quantos dígitos tem de certo, vou testar aqui
Edit_2 : Exatamente, deu certo, valeu Pedro, pode fechar o tópico.

Eis o código:

Código:
tempo=scr_concatena(scr_arruma_tempo(global.minuto,false),scr_arruma_tempo(global.segundo,false),scr_arruma_tempo(global.milesimo,true))

if string_length(string(tempo))=1 then tempo='0.000000'+string(tempo)
if string_length(string(tempo))=2 then tempo='0.00000'+string(tempo)
if string_length(string(tempo))=3 then tempo='0.0000'+string(tempo)
if string_length(string(tempo))=4 then tempo='0.000'+string(tempo)
if string_length(string(tempo))=5 then tempo='0.00'+string(tempo)
if string_length(string(tempo))=6 then tempo='0.0'+string(tempo)
if string_length(string(tempo))=7 then tempo='0.'+string(tempo)

Deu outro erro, quando eu fui verificar os valores :
Código:

___________________________________________
ERROR in
action number 2
of  Step Event
for object obj_final_fase:

Error in code at line 23:
  if tempo<=0.0010000 then ini_write_real("Levels","Level_1",0);
            ^
at position 12: Cannot compare arguments.

Can't compare arguments, o que isso significa? E como resolver?

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Transformar string em real

Mensagem por PedroX em Ter 01 Maio 2012, 16:34

Por que não dá para comparar números com strings.
Converta a string em numero usando real().

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Transformar string em real

Mensagem por Black Studio em Qua 02 Maio 2012, 20:49

Eu suspeitei que até fosse isso, mas eu não consigo encontrar outro código real, alem de real, agora eu estou em dúvida de como converter porquê... Eu não sei como fazer isso :/ Se alguém puder me ajudar, eu vou ficar muito feliz x3 =)

Até! flw

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Transformar string em real

Mensagem por Kabeção em Qui 03 Maio 2012, 11:51

Pare ai, não to entendendo o que você está fazendo.
Está querendo só formatar, comparar tempo que alguma coisa, ou transformar o tempo já formatado?

Kabeção

Ranking : Sem avaliações
Número de Mensagens : 2314
Data de inscrição : 08/06/2008
Reputação : 100
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 0
   : 1

http://blackcapapps.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Transformar string em real

Mensagem por Black Studio em Qui 03 Maio 2012, 19:43

Vish, agora tá dificil de explicar, mas antes, eu queria que tivesse um 0, no numero, até ai tudo bem, mas eu queria usar IFs coisa e tal, para ver se tem record de tempo, só que daí, eu só consegui usando Strings! E com strings eu não posso fazer :
Código:
if tempo<0,000134765 then medalhadaamizade=true
Entendeu?

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Transformar string em real

Mensagem por Kabeção em Sex 04 Maio 2012, 16:06

Você deveria evitar de usar números com mais de duas casas decimais no GM.
Se você precisa checar ou exibir tempo foque-se mais em milisegundos.

Um script que fiz:
Código:
// time_step(steps,fps);
// retorna string com tempo

var str,s,m,h;
str = '';

s = floor((argument0/argument1) mod 60);
m = floor(((argument0/argument1)/60) mod 60);
h = floor((((argument0/argument1)/60)/60));

if h < 10 str += '0'+string(h);
else str += string(h);
str += ':';
if m < 10 str += '0'+string(m);
else str += string(m);
str += ':';
if s < 10 str += '0'+string(s);
else str += string(s);

return str;
Esse script é baseado na quantidade de steps para contar o tempo.
Por exemplo quando uma fase começa você defini um variável tempo como 0 e a cada step aumenta mais um, então use o script caso a room_speed seja 60:
Código:
// 1 segundo = 60 frames
draw(x,y,time_step(tempo,60))
Isso previne que mesmo se o jogador ou você (para debug) aumentar a velocidade do jogo o tempo estará de acordo.
Se quer tempo real com as variaveis de tempo do GM é so definir o fps para 1000 (1 segundo = 1000 milisegundos).

Na hora de checar pontuação é fácil:
Código:
if tempo < 60*60 medalha = medalha_de_1minuto;
// ou
if tempo < 60*1000 medalha = medalha_de_1minuto;

Não é uma boa idéia transformar o tempo em string e depois usar essa string pra comparação.
O ideal nesse caso, assim como mostrei, é uma variável unica que contem o valor do tempo e trabalhar só encima dela afinal é muito mas fácil guardar 6020 segundos do que 1 hora, 40 minutos e 20 segundos.

Kabeção

Ranking : Sem avaliações
Número de Mensagens : 2314
Data de inscrição : 08/06/2008
Reputação : 100
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 0
   : 1

http://blackcapapps.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Transformar string em real

Mensagem por Conteúdo patrocinado Hoje à(s) 04:03


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum