[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 ?

Cette box est archivées elle ne peut plus être commentée.
Poster un commentaire
Miroir
Miroir
10 ans

A cause de la précision du type float, cf les réponses :

http://stackoverflow.com/questions/3031143/why-cant-i-multiply-a-float

superPlot
superPlot
10 ans

les float on une représentation non continue des réel.

charles2404

merci j'irai voir plus tard

charles2404

donc en gros, il y a pas de solution pour multiplier 2 floats en C de manière exacte

Olbaid
Olbaid
10 ans

Exacte non, en revanche le double est plus précis

superPlot
superPlot
10 ans

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.

anonyme
anonyme
10 ans

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

bzerath
bzerath
10 ans

C'est pour ça qu'il ne faut surtout pas faire un if (a == b) si ce sont des float :)

NSFW
Webcams adultes gratuites

[NSFW]Webcams adultes gratuites
go.xlirdr.com?campai - En direct

Choualbox