4875+0.2332 = 4875.233398 problème précision float?

4875+0.2332 = 4875.233398 problème précision float? - C - Programmation

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
Reply

Marsh Posté le 08-07-2008 à 16:57:08   

Reply

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

Reply

Marsh Posté le 08-07-2008 à 20:16:36    

y a plus de cours d'architecture des ordinateurs ou on apprend ça ou bien ?

Reply

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. [:god]

Reply

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. [:god]


 
Exactement pareil pour moi. D'ailleurs, on n'apprend pas grand chose à l'école :(
 
Quelques infos supplémentaires : http://fr.wikipedia.org/wiki/Float

Reply

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.

Reply

Marsh Posté le 09-07-2008 à 02:47:24    

Ca serait sympa de corriger le titre qui rime à rien au passage [:dawao]


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

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 [:dawao]


une proposition?

Reply

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).

Reply

Marsh Posté le 09-07-2008 à 10:18:38    

jijiz a écrit :


une proposition?


Tu te fous de ma gueule ?

Message cité 1 fois
Message édité par el muchacho le 09-07-2008 à 10:19:35

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 09-07-2008 à 10:18:38   

Reply

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.


Message édité par Taz le 09-07-2008 à 10:27:41
Reply

Marsh Posté le 09-07-2008 à 15:42:34    

el muchacho a écrit :


Tu te fous de ma gueule ?


non
 
restons détendu du péni.


Message édité par jijiz le 09-07-2008 à 15:42:55
Reply

Marsh Posté le 09-07-2008 à 15:58:24    

Un indice: 4875+0.2332 = 233398 ...
ça ne t'interpelle pas, ça ??? :sarcastic:


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 09-07-2008 à 16:02:32    

el muchacho a écrit :

Un indice: 4875+0.2332 = 233398 ...
ça ne t'interpelle pas, ça ??? :sarcastic:


Ok pour la correction, mais je ne trouve pas le titre insensé.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed