Supprimer les zéro inutile printf

Résolu
a n -  
cocodu67... Messages postés 3178 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
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 3178 Date d'inscription   Statut Membre Dernière intervention   145
 
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   Statut Contributeur Dernière intervention   1 846
 
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 3178 Date d'inscription   Statut Membre Dernière intervention   145
 
Ah je ne connaissais pas cela :)
0