Format a number containing a decimal point with leading zeroes

前端 未结 5 1240
南旧
南旧 2021-02-20 04:48

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 dig

相关标签:
5条回答
  • 2021-02-20 04:57

    I like the new style of formatting.

    loop = 2
    pause = 2
    print 'Begin Loop {0}, {1:06.2f} Seconds Pause'.format(loop, pause)
    >>>Begin Loop 2, 0002.1 Seconds Pause
    

    In {1:06.2f}:

    • 1 is the place holder for variable pause
    • 0 indicates to pad with leading zeros
    • 6 total number of characters including the decimal point
    • 2 the precision
    • f converts integers to floats
    0 讨论(0)
  • 2021-02-20 05:02

    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'
    
    0 讨论(0)
  • 2021-02-20 05:09
    print('{0:07.3f}'.format(12.34))
    

    This will have total 7 characters including 3 decimal points, ie. "012.340"

    0 讨论(0)
  • 2021-02-20 05:12

    Like this?

    >>> '%#05.1f' % 3.3
    '003.3'
    
    0 讨论(0)
  • 2021-02-20 05:13

    Is that what you look for?

    >>> "%07.1f" % 2.11
    '00002.1'
    

    So according to your comment, I can come up with this one (although not as elegant anymore):

    >>> fmt = lambda x : "%04d" % x + str(x%1)[1:]
    >>> fmt(3.1)
    0003.1
    >>> fmt(3.158)
    0003.158
    
    0 讨论(0)
提交回复
热议问题