## Limiting floats to two decimal points

### Question

I want `a` to be rounded to 13.95.

``````>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999
``````

The `round` function does not work the way I expected.

2017/09/29
1
1731
9/29/2017 4:42:18 AM

There are new format specifications, String Format Specification Mini-Language:

You can do the same as:

``````"{:.2f}".format(13.949999999999999)
``````

Note 1: the above returns a string. In order to get as float, simply wrap with `float(...)`:

``````float("{:.2f}".format(13.949999999999999))
``````

Note 2: wrapping with `float()` doesn't change anything:

``````>>> x = 13.949999999999999999
>>> x
13.95
>>> g = float("{:.2f}".format(x))
>>> g
13.95
>>> x == g
True
>>> h = round(x, 2)
>>> h
13.95
>>> x == h
True
``````
2020/03/29

The built-in `round()` works just fine in Python 2.7 or later.

Example:

``````>>> round(14.22222223, 2)
14.22
``````

Check out the documentation.

2018/05/25

I feel that the simplest approach is to use the `format()` function.

For example:

``````a = 13.949999999999999
format(a, '.2f')

13.95
``````

This produces a float number as a string rounded to two decimal points.

2015/08/28

Use

``````print"{:.2f}".format(a)
``````

``````print"{0:.2f}".format(a)
``````

Because the latter may lead to output errors when trying to output multiple variables (see comments).

2018/05/25

Most numbers cannot be exactly represented in floats. If you want to round the number because that's what your mathematical formula or algorithm requires, then you want to use round. If you just want to restrict the display to a certain precision, then don't even use round and just format it as that string. (If you want to display it with some alternate rounding method, and there are tons, then you need to mix the two approaches.)

``````>>> "%.2f" % 3.14159
'3.14'
>>> "%.2f" % 13.9499999
'13.95'
``````

And lastly, though perhaps most importantly, if you want exact math then you don't want floats at all. The usual example is dealing with money and to store 'cents' as an integer.

2009/01/18