Virgule flottante mise en forme dans printf()
J'ai un tableau de chars où les données sont stockées avec différents points décimaux de sorte que certains sont 123.40000
, 123.45000
, 123.45600
...maintenant, si je veux imprimer ces valeurs dans la chaîne sans le 0 à la fin, en printf()
de sorte qu'ils sont 123.4
, 123.45
, 123.456
, sans que ceux-0 à la fin. Est-ce possible? Si oui, comment?
OriginalL'auteur sfactor | 2009-12-07
Vous devez vous connecter pour publier un commentaire.
Utiliser le %g formateur:
imprime
123.4
Zéros sont supprimés, mais, malheureusement, est la virgule décimale de fin si la partie décimale est nulle. Je ne sais pas si il est en fait un moyen de faire ce que vous voulez directement à l'aide de printf() - je pense à quelque chose comme ceci est probablement votre meilleur pari:
Non, c'est très bien quand vous savez ce que vous faites. “Ne jamais comparer des nombres à virgule flottante pour
==
” est seulement une approximation de la simplicité.OriginalL'auteur
Je ne sais pas comment hacky c'est mais:
http://codepad.org/e3Q3pUNd
Retourne
124.0
.Retourne
124.123
.OriginalL'auteur Nick Presta
Utiliser %g --
L'impression d'un double soit en normal ou en notation exponentielle, selon ce qui est le plus approprié pour sa grandeur. 'g' utilise des lettres minuscules, 'G' utilise des lettres majuscules. Ce type diffère légèrement de la notation à point fixe dans cette insignifiante zéros à droite de la virgule ne sont pas inclus. Aussi, le point décimal n'est pas inclus sur les nombres entiers.
OriginalL'auteur Mick Walker
Impression d'une (assez grand) de la mémoire tampon. Imprimez le tampon ... et si il n'y a pas
'.'
dans le tampon d'impression d'une dot.modifier
La Norme spécifie les
#
drapeau:... mais vous obtenez les zéros de fin 🙁
OriginalL'auteur pmg