【问题标题】:Pad python floats垫蟒蛇浮动
【发布时间】:2009-09-15 01:07:56
【问题描述】:

我想填充一些百分比值,以便小数位前始终有 3 个单位。使用整数我可以使用 '%03d' - 是否有等效的浮点数?

'%.3f' 适用于小数点后,但 '%03f' 什么都不做。

【问题讨论】:

    标签: python floating-point zero pad


    【解决方案1】:

    '%03.1f' 有效(1 可以是任何数字,也可以是空字符串):

    >>> "%06.2f"%3.3
    '003.30'
    
    >>> "%04.f"%3.2
    '0003'
    

    请注意,字段宽度包括小数位和小数位。

    【讨论】:

    • 如果该值为负数,则前导 '-' 将消耗字段宽度计数之一 - "%06.2f" % -3.3 给出 "-03.30",因此如果您必须有 3 位数字如果为负,则必须在字段宽度上再增加一个。您可以使用 '' fieldwidth 值执行此操作,并传递一个计算值: value = -3.3;打印 "%0.2f" % (6+(value
    • 这是@PaulMcGuire 的意思,但使用format:value = -3.3; print "{t:0{format}.2f}".format(format=6+(value<0), t=value)
    【解决方案2】:

    或者,如果你想使用.format

                  {:6.1f}
                    ↑ ↑ 
                    | |
    # digits to pad | | # of decimal places to display
    

    复制粘贴:{:6.1f}

    上面的6包括小数点左边的数字、小数点标记和小数点右边的数字。

    使用示例:

    '{:6.2f}'.format(4.3)
    Out[1]: '  4.30'
    
    f'{4.3:06.2f}'
    Out[2]: '004.30'
    
    '{:06.2f}'.format(4.3)
    Out[3]: '004.30'
    

    【讨论】:

    • 请注意,这是要填充的 TOTAL 位数,包括小数点右侧的位数。它不仅仅是小数点左边的数字。我花了太长时间才弄清楚为什么这不起作用
    【解决方案3】:

    你也可以使用 zfill。

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

    【讨论】:

      【解决方案4】:

      一个简短的例子:

      var3= 123.45678
      print(
          f'rounded1    \t {var3:.1f} \n' 
          f'rounded2    \t {var3:.2f} \n' 
          f'zero_pad1   \t {var3:06.1f} \n'  #<-- important line
          f'zero_pad2   \t {var3:07.1f}\n'   #<-- important line
          f'scientific1 \t {var3:.1e}\n'
          f'scientific2 \t {var3:.2e}\n'
      )
      

      给出输出

      rounded1         123.5 
      rounded2         123.46 
      zero_pad1        0123.5 
      zero_pad2        00123.5
      scientific1      1.2e+02
      scientific2      1.23e+02
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-27
        • 2020-06-06
        • 2018-07-26
        • 2010-10-21
        • 2016-05-28
        • 2014-08-01
        • 2021-06-28
        • 1970-01-01
        相关资源
        最近更新 更多