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

Responder a