How to turn a float number like 293.4662543 into 293.47 in python?

From The Floating-Point Guide's Python cheat sheet:

"%.2f" % 1.2399 # returns "1.24"
"%.3f" % 1.2399 # returns "1.240"
"%.2f" % 1.2 # returns "1.20"

Using round() is the wrong thing to do, because floats are binary fractions which cannot represent decimal digits accurately.

If you need to do calculations with decimal digits, use the Decimal type in the decimal module.


If you want a number, use the round() function:

>>> round(12.3456, 2)
12.35

(but +1 for Michael's answer re. the Decimal type.)

If you want a string:

>>> print "%.2f" % 12.34567
12.35