Problème d'arrondi

Lsvd - 12 janv. 2018 à 14:30 - Dernière réponse : Whismeril 10782 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 13 janvier 2018 Dernière intervention
- 13 janv. 2018 à 21:00
Bonjour,

J'ai une fonction en C qui ne manipule que des doubles pour calculer une médiane, sauf qu'en résultat au lieu de me retourner 37.3 elle renvoie 37.299999999997 (par exemple), ce qui fausse tous mes calculs par la suite..

Merci d'avance !
Afficher la suite 

2 réponses

Répondre au sujet
Whismeril 10782 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 13 janvier 2018 Dernière intervention - 12 janv. 2018 à 16:06
0
Utile
Bonjour
Mais j'ai réellement besoin de la valeur non arrondi

ça n'est pas vraiment un arrondi, par définition un arrondi simplifie le nombre. Mais c'est bien la valeur approchée possible la plus proche.
37.3 n'existe tout simplement pas en double.

Pense à une calculatrice qui affiche 10 caractères et qui sait écrire en notation scientifique.
Si tu tapes "9999999999 + 2" elle va t'afficher "1.000 E+11" (y'a bien 10 caractères). Tu perds en précision car 10000000000 ce n'est pas 10000000001.
C'est ce qu'on appelle un nombre à virgule flottante. Le double ou le float marchent à peu près de la même façon, mais en puissance de 2.
Du coup avec un calcul de ce type et le nombre de "caractères" alloués, 37.3 ne peut pas être décrit.

Voir toute la norme ici
https://fr.wikipedia.org/wiki/Virgule_flottante
Commenter la réponse de Whismeril
Whismeril 10782 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 13 janvier 2018 Dernière intervention - 13 janv. 2018 à 21:00
0
Utile
Quel est le calcul qui te retourne cette valeur?
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.