251 votes

Mise en forme des flotteurs en Python sans superflu zéros

Comment formater un flotteur de sorte qu'il n'est pas de l'information de la remaing zéros? En d'autres termes, je veux la chaîne résultante à être aussi court que possible..?

Comme:

3 -> "3"
3. -> "3"
3.0 -> "3"
3.1 -> "3.1"
3.14 -> "3.14"
3.140 -> "3.14"

228voto

Alex Martelli Points 330805

Moi, je ferais ('%f' % x).rstrip('0').rstrip('.') -- garanties point fixe sur la forme plutôt que la notation scientifique, etc etc. Ouais, pas aussi lisse et élégant, %g, mais, ça marche (et je ne sais pas comment forcer %g à ne jamais utiliser la notation scientifique;-).

227voto

unutbu Points 222216

Vous pouvez utiliser %g de réaliser ceci:

'%g'%(3.140)

ou, pour la version 2.6 de Python ou mieux:

'{0:g}'.format(3.140)

À partir de la documentation pour format: g causes (entre autres choses)

insignifiant zéros [à] retiré de la significande, et la point décimal est également supprimé si il y ne reste chiffres suivants.

0voto

G M Points 508

Vous pouvez utiliser ceci:

a=3.1400

print "%0.4f" %(a)
3.1400

print "%0.3f" %(a)
3.140

print "%0.2f" %(a)
3.14

print "%0.1f" %(a)
3.1

-1voto

user272933 Points 8

Le formatage "%.f"%num sera créer des chaînes sans les zéros

-2voto

Utiliser %g avec une assez grande largeur, par exemple '%.99g'. Il permet d'imprimer en notation à virgule fixe pour toute raisonnablement grand nombre.

EDIT: ça ne fonctionne pas

>>> '%.99g' % 0.0000001
'9.99999999999999954748111825886258685613938723690807819366455078125e-08'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X