Titre: Mathématiques dans le C Posté par: Matsui le 23 Janvier 2015 à 11:25:09 Bonjour tout le monde. Moi c'est Matsui, je viens de débuter le C et je fais quelques exos. Le C en lui même ça va, logique, tout va bien, par contre je bute pas mal sur les notions mathématiques étant issu d'une filière littéraire. Voici mon problème :
J'ai fais un exercice, il s'agissait de comprendre le code suivant et de donner les résultats avant de le compiler, mes commentaires sont mes réponses : Code: #include <stdio.h> voici le résultat Citation A : 543 34.5677986145 J'ai a peu près bon, mais pourquoi printf n'affiche les 800 ? J'ai plus ou moins compris le concept de contracture, mais pourquoi ? Le Float n'est pas assez grand pour le contenir ? J'y ai pensé mais j'y crois moyen. b : 543 34.567799 C : 543 34.567799 d : 34.568 3.457e+01 e : 543 f : 34.56780 Voilà, merci à vous. Titre: Re : Mathématiques dans le C Posté par: matthieu1984 le 24 Janvier 2015 à 17:40:29 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: Code: % cat /tmp/a.c 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 Code: valeur = signe × mantisse × 2^(exposant − décalage) 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 Titre: Re : Mathématiques dans le C Posté par: Matsui le 26 Janvier 2015 à 20:16:15 Merci, tu as tout à fait répondu à ma question. C'est donc bien une histoire de stockage et d'arrondi.
Merci bonne soirée à toi ! |