Gemix permite casteo de datos?

Discusión en general sobre Gemix.
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Gemix permite casteo de datos?

Post by erkosone »

esque si le pongo int sale un numero extraño muy largo.
User avatar
GINO
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm
Contact:

Re: Gemix permite casteo de datos?

Post by GINO »

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
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Gemix permite casteo de datos?

Post by erkosone »

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
GINO
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm
Contact:

Re: Gemix permite casteo de datos?

Post by GINO »

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
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Gemix permite casteo de datos?

Post by erkosone »

ok.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Gemix permite casteo de datos?

Post by CicTec »

Hola erkos,

Lo he probado con la nueva beta, pero funciona todo bien, puedes probar este simple programa para confirmar ?:
[Codebox=gemix file=Untitled.gemix]
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
[/Codebox]
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.
Post Reply

Return to “General”