personaje wrote:
Si bien no estoy seguro, /confío/ que al no modificar el float, la
vuelta atrás se hace bien.
Si estoy pifiando feo acá avisen : )
Le estás pifiando; justamente hacés saltar lo que digo: x !=
(int)((float) x)... ir y volver mediante casteos no preserva a tu número
dado que el float tiene una mantisa de sólo 23 números y te trunca mal
los dígitos menos significativos.
Para lo que vos querés lo que tenés que hacer es no castear; sino
guardar los bytes como vengan:
float f;
int *pi = (int*)&f;
*pi = 5; // Guardo los bits tal cual son para un int pero los almaceno
en un float.
De esta manera independientemente de como vos accedas a los datos, los
datos se preservan... no hay casteos, sólo hay diferentes contextos para
entender a esos bytes. En ese caso, no vas a tener que truncar ni
convertir nada... más rápido y correcto que algo así no tenés.
Saludos;
Sebastián Santisi
[EMAIL PROTECTED]
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion