Search code examples
pythonstring-formattingdecimal-point

Format a number containing a decimal point with leading zeroes


I want to format a number with a decimal point in it with leading zeros.

This

>>> '3.3'.zfill(5)
003.3

considers all the digits and even the decimal point. Is there a function in python that considers only the whole part?

I only need to format simple numbers with no more than five decimal places. Also, using %5f seems to consider trailing instead of leading zeros.


Solution

  • Starting with a string as your example does, you could write a small function such as this to do what you want:

    def zpad(val, n):
        bits = val.split('.')
        return "%s.%s" % (bits[0].zfill(n), bits[1])
    
    >>> zpad('3.3', 5)
    '00003.3'