Supprimer les zéro inutile printf

Résolu/Fermé
a n - 1 août 2014 à 09:25
cocodu67... Messages postés 3162 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 20 novembre 2024 - 1 août 2014 à 11:55
Bonjour,

Et-ce qu'il existe une moyen de supprimer les 0 inutiles dans un printf. Attention, la variable qui vas être affichée dans un printf varie. Le programme ne connaît donc pas à l'avance le nombre flottant qui vas être affiché.
Je sais qu'il existe une méthode de formatage pour ne garder qu'un certain nombre de chiffre après la virgule :
printf("Nombre formate : %.3lf\n", 6.876000)
Mais cela ne me convient pas car si le nombre change, le formatage ne convient plus (par exemple le nombre 8.5685000).
Je sais aussi qu'il existe %g, mais il m'arrondis les nombres. Donc ça ne me convient pas non plus.
Ce que je cherche est une technique qui permette de supprimer les 0 inutiles à la fin d'un nombre UNIQUEMENT.

Merci pour votre aide
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
1 août 2014 à 10:50
Bonjour,

Pour info, le bon format à utiliser pour afficher un double dans printf() est "%f" et non "%lf".
"%g " peut être utilisé mais il va tronquer avec la précision par défaut. A toi donc d'indiquer ta précision. Par exemple : "%.7g" pour une précision de 7.

Si ça ne te convient pas, j'ai bien peur que tu doives te faire une fonction...
3
cocodu67... Messages postés 3162 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 20 novembre 2024 145
1 août 2014 à 10:54
Bonjour

Effectivement, comme le nombre de zéros varie, le mieux est de faire une fonction qui place chaque chiffre après la virgule dans un tableau, parcours ce tableau en commençant par la fin et en s'arrêtant au premier zéro.
Il ne faut surtout pas commencer au début sinon 1.1250650000 deviendrait 1.125 et c'est certainement pas ce qu'il cherche à faire.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
Modifié par fiddy le 1/08/2014 à 11:48
Meme pas besoin de s'embeter a mettre uniquement la partie decimale dans un tableau. Tu stockes ton flottant dans un buffer temporaire avec snprintf(),
Ensuite tu pars bien sur de la fin (utilisation de strlen(buf)); et tu remontes jusqu'au '.'.
Voilou.
0
cocodu67... Messages postés 3162 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 20 novembre 2024 145
1 août 2014 à 11:55
Ah je ne connaissais pas cela :)
0