Print floating point values without leading zero

后端 未结 13 1209
逝去的感伤
逝去的感伤 2020-11-30 05:21

Trying to use a format specifier to print a float that will be less than 1 without the leading zero. I came up with a bit of a hack but I assume there is a way to just drop

13条回答
  •  清歌不尽
    2020-11-30 06:02

    import re
    re.sub("^(\-?)0\.", r'\1.', "%.4f" % k)
    

    This is short, simple and I can't find a scenario for which it doesn't work.

    Examples:

    >>> import re
    >>> re.sub("^(\-?)0\.", r'\1.', "%.4f" % 0)
    '.0000'
    >>> re.sub("^(\-?)0\.", r'\1.', "%.4f" % 0.1337)
    '.1337'
    >>> re.sub("^(\-?)0\.", r'\1.', "%.4f" % 1.337)
    '1.3370'
    >>> re.sub("^(\-?)0\.", r'\1.', "%.4f" % -0)
    '.0000'
    >>> re.sub("^(\-?)0\.", r'\1.', "%.4f" % -0.1337)
    '-.1337'
    >>> re.sub("^(\-?)0\.", r'\1.', "%.4f" % -1.337)
    '-1.3370'
    >>> re.sub("^(\-?)0\.", r'\1.', "%.4f" % 10.337)
    '10.3370'
    >>> re.sub("^(\-?)0\.", r'\1.', "%.4f" % -10.337)
    '-10.3370'
    

    Edit: If you are only considering numbers > -10 and < 10 The following will work:

    ("%.4f", k).replace('0.', '.')
    

提交回复
热议问题