Gemix permite casteo de datos?

Discusión en general sobre Gemix.

Re: Gemix permite casteo de datos?

Postby erkosone » Sat May 14, 2011 12:29 am

esque si le pongo int sale un numero extraño muy largo.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Gemix permite casteo de datos?

Postby GINO » Sat May 14, 2011 12:40 am

Creo que había unos problemas con algún casteo, haber que dice Cictec. Pero bueno, la forma correcta es como en C (cuando este todo arreglado debería ser como en C quiero decir xD).
User avatar
GINO
 
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm

Re: Gemix permite casteo de datos?

Postby erkosone » Sat May 14, 2011 12:44 am

Ok perfect.

Si, ahora mismo pasa algo raro pasando de float a int, corrompe el munero.

Pero escrito al revés funciona bien y ya me sirve, cuando salga la nueva beta si se arregla ya lo corrijo en el programa, no problem ;)
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Gemix permite casteo de datos?

Postby GINO » Sat May 14, 2011 1:07 am

erkos... como dije antes, escrito al revés no es que funcione, es que es una operación inútil. No es el (float) lo que está convirtiendo la variable round a int, sino el casteo implícito del =, así que puedes escribirlo simplemente como var = round; ya que ponerle (float) a un float es redundante aparte de que puede despistar.
User avatar
GINO
 
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm

Re: Gemix permite casteo de datos?

Postby erkosone » Sat May 14, 2011 6:33 am

ok.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Gemix permite casteo de datos?

Postby CicTec » Sat May 14, 2011 8:13 am

Hola erkos,

Lo he probado con la nueva beta, pero funciona todo bien, puedes probar este simple programa para confirmar ?:
Source Code (Gemix) [ Download ] [ Hide ]
  • program test_casting;
  •  
  • global
  •   int iv;
  •   double dv;
  •  
  • begin
  •   dv = 102345667.434343435534;
  •   iv = (int)dv;
  •  
  •   write_int(0, 160, 100, 4, &iv);
  •    
  •   repeat
  •     frame;
  •   until(key(_esc));
  • end
  •  

Deberia dar como output el numero 102345667

Sobre el casting anterior que has hecho (var = (float)round), como ya te dijo GINO, es una operacion inutil ademas de ser erratica, porque estas casteando la variable da DOUBLE a FLOAT, si el numero es demasiado grande (en este caso no, pero puede pasar), al castearlo, saldra otro por la perdida de precision, a su vez este numero sera casteado implicitamente a INT.
User avatar
CicTec
 
Posts: 16571
Joined: Thu Jul 31, 2008 10:18 pm

Previous

Return to General

Who is online

Users browsing this forum: No registered users and 3 guests