如何在Python中将浮点数格式化为固定宽度

如何在Python中将浮点数格式化为固定宽度,python,string,numbers,number-formatting,Python,String,Numbers,Number Formatting,如何根据以下要求将浮点数格式化为固定宽度: n

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

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

    % formatter something like '{:06}'
    numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]
    
    for number in numbers:
        print formatter.format(number)
    
    输出结果如下

      23.2300
       0.1233
       1.0000
       4.2230
    9887.2000
    
    印刷品

       23.2300
        0.1233
        1.0000
        4.2230
     9887.2000
    
    大括号内的格式说明符遵循。具体而言,在这种情况下,它由以下部分组成:

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

    在python3中,以下工作:

    >>> v=10.4
    >>> print('% 6.2f' % v)
      10.40
    >>> print('% 12.1f' % v)
            10.4
    >>> print('%012.1f' % v)
    0000000010.4
    
    请参见Python3.x:

    在Python3中

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

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

    这一问题得到解答已经有几年了,但从Python 3.6()开始,您可以使用新的
    f-strings

    numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]
    
    for number in numbers:
        print(f'{number:9.4f}')
    
    打印:

      23.2300
       0.1233
       1.0000
       4.2230
    9887.2000
    

    你也可以在左键盘上加零。例如,如果希望
    number
    的长度为9个字符,请使用以下命令左键填充零:

    print({:09.3f})。格式(编号))

    因此,如果
    number=4.656
    ,则输出为:
    00004.656

    对于您的示例,输出如下所示:

    numbers  = [23.2300, 0.1233, 1.0000, 4.2230, 9887.2000]
    for x in numbers: 
        print('{:010.4f}'.format(x))
    
    印刷品:

    00023.2300
    00000.1233
    00001.0000
    00004.2230
    09887.2000
    
    一个可能有用的例子是,当您希望按字母顺序正确列出文件名时。我注意到在一些linux系统中,数字是:1,10,11,…2,20,21


    因此,如果您想在文件名中强制执行必要的数字顺序,则需要在pad中留下适当数量的零。

    我需要类似的数组。这对我很有帮助

    some_array_rounded=np.around(some_array, 5)
    

    这将打印
    76.66

    print(“编号:”,f“{76.663254:.2f}”)
    
    所以我知道4f代表将小数限制为4(后面是零),但10是什么意思?这是否意味着此格式不适用于大于9999999999(十个9)的整数?好奇。
    10.4
    表示10个字符的宽度和4位小数的精度。@hobbes3:
    10
    是最小字段宽度,即打印字符串的最小长度。默认情况下,数字右对齐并用空格填充--有关更多详细信息,请参阅。对于2.7之前的Python:
    (%0.4f”%x)。rjust(10)
    @StevenRumbalski:或者干脆
    %10.4f”%x
    。在Python2.6中,还可以使用
    “{0:10.4f}”.format(x)
    。请注意,宽度还包括点字符。因此,如果指定9为宽度,1将用于打印点,其他8将用于打印数字和空格。这在过去4年中发生了变化,现在
    %
    格式化是最古老的格式化方法。出于多种原因,使用
    str.format
    f-strings
    优于
    %
    。以前只有
    str.format
    ,人们有一些原因,但
    f-strings
    修复了这个漏洞,和
    00023.2300
    00000.1233
    00001.0000
    00004.2230
    09887.2000
    
    some_array_rounded=np.around(some_array, 5)