[question] Multiplication en C
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
@Miroir: donc en gros, il y a pas de solution pour multiplier 2 floats en C de manière exacte
@charles2404: 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
Tu ne dois accéder à ce site que si tu as au moins 18 ans ou si tu as l'âge légal pour visionner ce type de matériel dans ta juridiction locale, l’âge le plus élevé étant retenu. En outre, tu déclares et garantis que tu ne permettras aucun mineur à d'accéder à ce site ou à ces services.
En accédant à ce site, tu acceptes nos conditions d'utilisation.