Salut Matsui,
Lorsque tu manipules des float ou des double en C, tu auras le plus souvent des résultats approximatifs pour la raison suivante:
% cat /tmp/a.c
#include <stdio.h>
int main()
{
printf("taille de float:\t%d\n", sizeof(float));
printf("taille de double:\t%d\n", sizeof(double));
return 0;
}
% gcc /tmp/a.c && ./a.out
taille de float: 4
taille de double: 8
%
Ce qui veut dire que le float est ici d'une taille de 4 octets (32 bits) et le double est d'une taille de 8 octets (64 bits)
Pour le stockage interne c'est un système de mantisse et exposant
valeur = signe × mantisse × 2^(exposant − décalage)
Pour le type float, le signe est sur 1 bit, l'exposant sur 8 bits et la mantisse prend le reste. C'est comme ça que c'est stocké en machine. Après, printf se débrouille pour te l'afficher mais du coups ça sera approximatif.
Je te renvoie à la lecture de l'article wikipedia pour plus de détails : http://fr.wikipedia.org/wiki/IEEE_754
En espérant avoir répondu à ta question...
Matt