Printf et float [Résolu]

Signaler
Messages postés
11
Date d'inscription
dimanche 6 juillet 2008
Statut
Membre
Dernière intervention
9 octobre 2008
-
Messages postés
11
Date d'inscription
dimanche 6 juillet 2008
Statut
Membre
Dernière intervention
9 octobre 2008
-
Bonjour,

Nous avons un problème avec la fonction printf.
En déclarant un float 42.42 et en demandant à printf de nous l'écrire avec printf("%f\n", myFloat) il affiche : 42.419998.
Est-ce que quelqu'un saurait pourquoi il n'affiche pas 42.42 ?
Si oui comment faire pour afficher la vrai valeur du float ?

Merci,

--
Bob & Marie

4 réponses

Messages postés
14936
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 janvier 2021
93
Ah non, tu ne peux pas avoir cette info...
Tu peux peut-être essayer d'utiliser des double plutôt que des float: les double sont plus précis

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
14936
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 janvier 2021
93
Salut,
Il n'y a pas de "vraie" valeur pour un float car ça dépend beaucoup de la précision machine. C'est pour ça, par exemple, qu'il ne faut pas tester l'égalité entre de float mais plutôt la différence de valeur absolue.
Si tu veux absolument afficher ton float avec 2 décimales, utilises la syntaxe suivante: printf("%.2f\n",myFloat);

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
11
Date d'inscription
dimanche 6 juillet 2008
Statut
Membre
Dernière intervention
9 octobre 2008

Bonjour,

Oui mais le problème c'est que je ne sais pas forcément le nombre de chiffre après la virgule. Du coup je ne peux pas utiliser un %.2f. C'est pas possible de connaitre le nombre de chiffre après la virgule ?

--
Bob & Marie
Messages postés
11
Date d'inscription
dimanche 6 juillet 2008
Statut
Membre
Dernière intervention
9 octobre 2008

En effet avec des float64 ca fonctionne.

Merci bien :)