关于字符串:如何在Python中将浮点数格式化为固定宽度

How to format a floating number to fixed width in Python

如何按照以下要求将浮点数格式化为固定宽度:

  • n<1时为零
  • 添加尾随小数零以填充固定宽度
  • 截断超过固定宽度的小数位数
  • 对齐所有小数点
  • 例如:

    1
    2
    3
    4
    5
    % formatter something like '{:06}'
    numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

    for number in numbers:
        print formatter.format(number)

    输出如下

    1
    2
    3
    4
    5
      23.2300
       0.1233
       1.0000
       4.2230
    9887.2000


    1
    2
    for x in numbers:
        print"{:10.4f}".format(x)

    版画

    1
    2
    3
    4
    5
       23.2300
        0.1233
        1.0000
        4.2230
     9887.2000

    大括号内的格式说明符遵循python格式字符串语法。具体来说,在这种情况下,它由以下部分组成:

    • 冒号前面的空字符串表示"将下一个提供的参数带到format()"——在本例中,x是唯一的参数。
    • 冒号后面的10.4f部分是格式规范。
    • f表示定点表示法。
    • 10是正在打印的字段的总宽度,左边用空格填充。
    • 4是小数点后的位数。


    这已经是几年前的事情了,但是对于python 3.6(pep498),您可以使用新的f-strings

    1
    2
    3
    4
    numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

    for number in numbers:
        print(f'{number:9.4f}')

    印刷品:

    1
    2
    3
    4
    5
      23.2300
       0.1233
       1.0000
       4.2230
    9887.2000


    在python3中,以下工程:

    1
    2
    3
    4
    5
    6
    7
    >>> v=10.4
    >>> print('% 6.2f' % v)
      10.40
    >>> print('% 12.1f' % v)
            10.4
    >>> print('%012.1f' % v)
    0000000010.4


    参见python 3.x格式字符串语法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    IDLE 3.5.1  
    numbers = ['23.23', '.1233', '1', '4.223', '9887.2']

    for x in numbers:  
        print('{0: >#016.4f}'. format(float(x)))  

         23.2300
          0.1233
          1.0000
          4.2230
       9887.2000


    在python 3中。

    1
    2
    GPA = 2.5
    print(" %6.1f" % GPA)

    6.1f表示点后1位数字表示如果在点后打印2位数字,则只应在点后打印%6.2f,以便%6.3f3位数字在点后打印。