J'ai récemment rencontré un problème où je n'obtenais pas le résultat numérique que je m'attendais. Je dépisté vers le bas au problème qui est illustré par l'exemple suivant:Pourquoi deux multiplicateurs à virgule flottante donnent-ils une réponse différente d'un?
#include <stdio.h>
int main()
{
double sample = .5;
int a = (int)(sample * (1 << 31));
int b = (int)(sample * (1 << 23) * (1 << 8));
printf("a = %#08x, b = %#08x\n", a, b);
}
// Output is: a = 0xc0000000, b = 0x40000000
Pourquoi est le résultat de la multiplication par (1 < < 31) différent du résultat de la multiplication par (1 < < 23) * (1 < < 8)? Je m'attendais à ce que les deux donnent la même réponse mais ils ne le font pas.
Je dois noter que toutes mes valeurs à virgule flottante sont dans la plage [-1, 1).
Votre code et votre question sont différents. – leppie
Merci, j'ai modifié la question pour correspondre au code. – sbooth