# string – How to format a floating number to fixed width in Python

## The Question :

357 people think this question is useful

How do I format a floating number to a fixed width with the following requirements:

1. Leading zero if n < 1
2. Add trailing decimal zero(s) to fill up fixed width
3. Truncate decimal digits past fixed width
4. Align all decimal points

For example:

% formatter something like '{:06}'
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
print formatter.format(number)



The output would be like

  23.2300
0.1233
1.0000
4.2230
9887.2000


The Question Comments :

## The Answer 1

546 people think this answer is useful
for x in numbers:
print "{:10.4f}".format(x)



prints

   23.2300
0.1233
1.0000
4.2230
9887.2000



The format specifier inside the curly braces follows the Python format string syntax. Specifically, in this case, it consists of the following parts:

• The empty string before the colon means “take the next provided argument to format()” – in this case the x as the only argument.
• The 10.4f part after the colon is the format specification.
• The f denotes fixed-point notation.
• The 10 is the total width of the field being printed, lefted-padded by spaces.
• The 4 is the number of digits after the decimal point.

## The Answer 2

114 people think this answer is useful

It has been a few years since this was answered, but as of Python 3.6 (PEP498) you could use the new f-strings:

numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
print(f'{number:9.4f}')



Prints:

  23.2300
0.1233
1.0000
4.2230
9887.2000



## The Answer 3

42 people think this answer is useful

In python3 the following works:

>>> v=10.4
>>> print('% 6.2f' % v)
10.40
>>> print('% 12.1f' % v)
10.4
>>> print('%012.1f' % v)
0000000010.4



## The Answer 4

11 people think this answer is useful

See Python 3.x format string syntax:

IDLE 3.5.1
numbers = ['23.23', '.1233', '1', '4.223', '9887.2']

for x in numbers:
print('{0: >#016.4f}'. format(float(x)))

23.2300
0.1233
1.0000
4.2230
9887.2000



## The Answer 5

8 people think this answer is useful

You can also left pad with zeros. For example if you want number to have 9 characters length, left padded with zeros use:

print('{:09.3f}'.format(number))

Thus, if number = 4.656, the output is: 00004.656

For your example the output will look like this:

numbers  = [23.2300, 0.1233, 1.0000, 4.2230, 9887.2000]
for x in numbers:
print('{:010.4f}'.format(x))



prints:

00023.2300
00000.1233
00001.0000
00004.2230
09887.2000



One example where this may be useful is when you want to properly list filenames in alphabetical order. I noticed in some linux systems, the number is: 1,10,11,..2,20,21,…

Thus if you want to enforce the necessary numeric order in filenames, you need to left pad with the appropriate number of zeros.

## The Answer 6

3 people think this answer is useful

In Python 3.

GPA = 2.5
print(" %6.1f " % GPA)



6.1f means after the dots 1 digits show if you print 2 digits after the dots you should only %6.2f such that %6.3f 3 digits print after the point.

## The Answer 7

1 people think this answer is useful

This will print 76.66:

print("Number: ", f"{76.663254: .2f}")



## The Answer 8

0 people think this answer is useful

I needed something similar for arrays. That helped me

some_array_rounded=np.around(some_array, 5)