xtremdev a écrit :
Si on revenait au pb de départ ??? Calculer une valeur absolue d'un type float
Question à 15 et un mars : "Quelle est la différence entre -3.14f et 3.14f ?"
Alors...
Réponse : le bit de poid fort.
Comme une variable de type float est codée sur 4 octets, on peut donc créer sa propre fonction fabs qui remet à zéro ce bit.
Code :
- float myfabs(float p_fValue)
- {
- unsigned long l_nInt32 = *((unsigned long *)((void*)&p_fValue));
- l_nInt32 = l_nInt32 & 0x7fffffff;
- p_fValue = *((float *)((void*)&l_nInt32));
- return p_fValue;
- }
|
|
bandant. (quitte a faire j'utiliserais sizeof() pour placer mon bit plutot que de le coder en dur)
mais c'est tres laid. Surtout que la fpu de nos intel dispose de l'instruction fabs et que la, en fait de performance, tu ruines tout