4875+0.2332 = 4875.233398 problème précision float? - C - Programmation
Marsh Posté le 08-07-2008 à 16:59:36
C'est sa vraie valeur. C'est la représentation la plus exacte que float peut te donner.
http://docs.sun.com/source/806-3568/ncg_goldberg.html
Marsh Posté le 08-07-2008 à 20:16:36
y a plus de cours d'architecture des ordinateurs ou on apprend ça ou bien ?
Marsh Posté le 08-07-2008 à 20:45:16
J'ai jamais appris ça en cours, j'ai dû y faire face en entreprise sur un cas réel qui m'a posé quelques problèmes, étant à ce moment-là débutant et totalement ignorant de ce fait.
Marsh Posté le 08-07-2008 à 21:37:30
Elmoricq a écrit : J'ai jamais appris ça en cours, j'ai dû y faire face en entreprise sur un cas réel qui m'a posé quelques problèmes, étant à ce moment-là débutant et totalement ignorant de ce fait. |
Exactement pareil pour moi. D'ailleurs, on n'apprend pas grand chose à l'école
Quelques infos supplémentaires : http://fr.wikipedia.org/wiki/Float
Marsh Posté le 08-07-2008 à 22:18:31
Ouais enfin bon, j'ai quand même envie de dire que la notion de bijection c'est niveau T S et qu'après en faisant marcher la boîte à cerveau il est facile de se rendre compte qu'on ne peut pas caser R dans 32bits.
Marsh Posté le 09-07-2008 à 02:47:24
Ca serait sympa de corriger le titre qui rime à rien au passage
Marsh Posté le 09-07-2008 à 09:17:43
el muchacho a écrit : Ca serait sympa de corriger le titre qui rime à rien au passage |
une proposition?
Marsh Posté le 09-07-2008 à 09:28:47
Taz a écrit : Ouais enfin bon, j'ai quand même envie de dire que la notion de bijection c'est niveau T S et qu'après en faisant marcher la boîte à cerveau il est facile de se rendre compte qu'on ne peut pas caser R dans 32bits. |
Rien à voir avec ça, je pensais juste que toutes les décimales étaient présentes dans le codage float jusqu'aux limites, ce qui n'est pas le cas. Je ne m'étais pas posé la question de savoir si l'ensemble des décimales dépassait 2^32 éléments, jusqu'au jour où j'en ai eu réellement besoin. (dans le cadre de mon travail, je n'ai pas eu à utiliser les float en 6 ans).
Marsh Posté le 09-07-2008 à 10:18:38
jijiz a écrit :
|
Tu te fous de ma gueule ?
Marsh Posté le 09-07-2008 à 10:27:26
xilebo a écrit : Rien à voir avec ça, je pensais juste que toutes les décimales étaient présentes dans le codage float jusqu'aux limites, ce qui n'est pas le cas. Je ne m'étais pas posé la question de savoir si l'ensemble des décimales dépassait 2^32 éléments, jusqu'au jour où j'en ai eu réellement besoin. (dans le cadre de mon travail, je n'ai pas eu à utiliser les float en 6 ans). |
Bah justement, il faut lire le papier: les floating-point, c'est précisément pas une représentation décimale.
Marsh Posté le 09-07-2008 à 15:42:34
el muchacho a écrit : |
non
restons détendu du péni.
Marsh Posté le 09-07-2008 à 15:58:24
Un indice: 4875+0.2332 = 233398 ...
ça ne t'interpelle pas, ça ???
Marsh Posté le 09-07-2008 à 16:02:32
el muchacho a écrit : Un indice: 4875+0.2332 = 233398 ... |
Ok pour la correction, mais je ne trouve pas le titre insensé.
Marsh Posté le 08-07-2008 à 16:57:08
Bonjour,
J'aimerais bien comprendre pourquoi :
float f_z;
f_z = 4875;
f_z = f_z + 0.2332;
printf("%f",f_z);
>> 4875.233398
Est-ce que la vrai valeur est retenue dans f_z et ceci viendrait du printf?
Y-a-t-il une solution pour que le calcul soit fait correctement?
Merci
Message édité par jijiz le 09-07-2008 à 16:00:41