## The Question :

*357 people think this question is useful*

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

- Leading zero if n < 1
- Add trailing decimal zero(s) to fill up fixed width
- Truncate decimal digits past fixed width
- 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)