Reputation: 29472
I want to pad some percentage values so that there are always 3 units before the decimal place. With ints I could use '%03d' - is there an equivalent for floats?
'%.3f' works for after the decimal place but '%03f' does nothing.
Upvotes: 48
Views: 49519
Reputation: 10657
Alternatively, if you want to use .format
:
{:6.1f}
↑ ↑
| |
# digits to pad | | # of decimal places to display
Copy paste: {:6.1f}
The 6 above includes digits to the left of the decimal, the decimal marker, and the digits to the right of the decimal.
Examples of usage:
'{:6.2f}'.format(4.3)
Out[1]: ' 4.30'
f'{4.3:06.2f}'
Out[2]: '004.30'
'{:06.2f}'.format(4.3)
Out[3]: '004.30'
Upvotes: 29
Reputation: 1443
A short example:
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'
)
Gives the output
rounded1 123.5
rounded2 123.46
zero_pad1 0123.5
zero_pad2 00123.5
scientific1 1.2e+02
scientific2 1.23e+02
Upvotes: 5
Reputation: 9301
'%03.1f' works (1 could be any number, or empty string):
>>> "%06.2f"%3.3
'003.30'
>>> "%04.f"%3.2
'0003'
Note that the field width includes the decimal and fractional digits.
Upvotes: 58