Question

Je souhaite appliquer des valeurs en pourcentage afin qu'il y ait toujours 3 unités avant la décimale. Avec ints, je pourrais utiliser '% 03d' - existe-t-il un équivalent pour les flottants?

'%. 3f' fonctionne après la décimale, mais '% 03f' ne fait rien.

Était-ce utile?

La solution

'% 03.1f' fonctionne (1 peut être un nombre quelconque ou une chaîne vide):

>>> "%06.2f"%3.3
'003.30'

>>> "%04.f"%3.2
'0003'

Notez que la largeur du champ comprend les chiffres décimaux et fractionnaires.

Autres conseils

Sinon, si vous souhaitez utiliser .format :

              {:6.1f}
                ↑ ↑ 
                | |
# digits to pad | | # of decimal places to display

Copypasta: {: 6.1f}

Exemple d'utilisation:

'Num: {:6.1f}'.format(number)

Vous pouvez également utiliser zfill,

.
str(3.3).zfill(5)
'003.3'

Un petit exemple:

var3= 123.45678
print(
    f'rounded1    \t {var3:.1f} \n' 
    f'rounded2    \t {var3:.2f} \n' 
    f'zero_pad1   \t {var3:06.1f} \n'  #<-- important line
    f'zero_pad2   \t {var3:07.1f}\n'   #<-- important line
    f'scientific1 \t {var3:.1e}\n'
    f'scientific2 \t {var3:.2e}\n'
)

Donne la sortie

rounded1         123.5 
rounded2         123.46 
zero_pad1        0123.5 
zero_pad2        00123.5
scientific1      1.2e+02
scientific2      1.23e+02
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top