Choual dev, chouallette dev, j'ai une question à vous posez:
J'ai fait ce petit code pour un exercice ( http://pastebin.com/Quc9ejyv ; ouais c'est pas ouf ) mais je me suis aperçu que si j'essaie de faire 5.2 × 9 ça me sort 46.799999 au lieu de 46.800000.
Pourquoi ?
A cause de la précision du type float, cf les réponses :
http://stackoverflow.com/questions/3031143/why-cant-i-multiply-a-float
donc en gros, il y a pas de solution pour multiplier 2 floats en C de manière exacte
Il n'y a pas de solution tout cour pour multiplier deux float avec précision.
Il te faut deux réel, en c ce n'est pas un type natif donc il faut que tu passe par une lib.
Tes chiffres après la virgule sont décomposés en puissance de 2 inverse sur des bits : 1/2, 1/4, 1/8, 1/16, etc (chacun étant représenté par un bit).
Mais le nombre de bits nécessaires pour encoder cette valeur peut être trop grand par rapport a ton type de variable (double, float) et donc tu as une approximation.
https://fr.wikipedia.org/wiki/Virgule_flottante#Norme_IEEE_754
